
ешё раз поправил
внимательно глянь скриптец smsevents в приложениях, особенно обрати внимание на sub EVT_receiveddacent писал(а):Исходящие это хорошо
А можно замутить выполнение определенных комманд на серваке при входящем смс?
ПасибRita писал(а):Кстати я этой темой как то занималась пару месяцев назад даже доков насобирала и уже поставил порты но потом все бросила, отвлекли и забыла(потом сделала оповещалки через джаббер), а тут наткнулась, смотрю статья есть. Молодец!
Во-во-во, тоже как вариантRita писал(а):Блин теперь не надо будет мозги ломать, классная статья. Хочу к биллингу прикрутить и за денюшку людей оповещать о балансах, просрочках и т.д.
Код: Выделить всё
2008-11-13 13:20:57,2, smsd: Smsd v3.1 started.
2008-11-13 13:20:57,2, smsd: Running as root:wheel.
2008-11-13 13:20:57,6, smsd: File mode creation mask: 022 (0644, rw-r--r--).
2008-11-13 13:20:57,6, smsd: Outgoing file checker has started. PID: 8464.
2008-11-13 13:20:57,6, GSM0: Modem handler 0 has started. PID: 8465.
2008-11-13 13:20:57,6, GSM0: Checking device for incoming SMS
2008-11-13 13:20:57,6, GSM0: Checking if modem is ready
2008-11-13 13:21:00,3, GSM0: Modem is not clear to send
2008-11-13 13:21:10,7, GSM0: -> ^Z^M
2008-11-13 13:21:10,3, GSM0: Could not send character ^Z, cause: Operation not supported by device
2008-11-13 13:21:20,7, GSM0: -> AT^M
2008-11-13 13:21:20,3, GSM0: Could not send character A, cause: Operation not supported by device
2008-11-13 13:21:31,7, GSM0: -> ^Z^M
2008-11-13 13:21:31,3, GSM0: Could not send character ^Z, cause: Operation not supported by device
как сказал manefesto :Rita писал(а):может есть заядлые телефонисты, может кто подскажет как быть? обгуглила все что могла но команды инициализации для своей сони так и не нашла, блин ведь должно же быть все по стандартам
мой семён тоже не брал входящие, пока не дал ему инициализацию, славбогу была на офф-сайте )))))))должно да не обязано
Код: Выделить всё
init=AT+CPMS="ME"
baudrate=115200
Код: Выделить всё
2008-11-13 13:21:00,3, GSM0: Modem is not clear to send
Код: Выделить всё
# For j300i - требуется только 1 параметр
init = AT+CPMS="ME","ME","ME"
# Huawei eg162, оба работают.
#init = at+cpbs="sm"
#init = at+cpms="sm","sm",""
#init2 - не нужен
При подключении телефона к системнику через юсб он выводит на консоль что типа подключено устройство через ugen0 Sony ... и в итоге что, но у меня то без rsr232 голый юсб кабель.lexy писал(а):ВНИМАНИЕ! Без установленных модулей кабель тоже будет определятся как /dev/ugenX, но работать не будет.
Если все модули на месте — подключаем кабель и смотрим:Код: Выделить всё
~> ls -lah /dev/cuaU* crw-rw---- 1 uucp dialer 0, 69 28 окт 15:01 /dev/cuaU0 crw-rw---- 1 uucp dialer 0, 70 24 окт 10:27 /dev/cuaU0.init crw-rw---- 1 uucp dialer 0, 71 24 окт 10:27 /dev/cuaU0.lock
Код: Выделить всё
# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
Код: Выделить всё
# используемые устройства, если несколько . пишем через запятую
devices = GSM0
# лог, если не указан . пишется в syslog, если = 1, пишет в stdout
logfile = /var/log/smsd.log
# писать фсё
loglevel = 7
# No comments, я надеюсь ;-)
#USER = smsd
#GROUP = dialer
# No comments too , главное . не забыть создать
# /var/run/smsd/ и дать все права юзеру smsd
PIDFILE= /var/run/smsd/smsd.pid
INFOFILE= /var/run/smsd/smsd.working
# Теперь настраиваем все телефоны, ГСМ-момеды и пр. шелезяки
# Siemens M75
[GSM0]
# порт
device = /dev/ugen0
# скорость в нем
baudrate = 115200
# аппаратное управление потоком
rtscts = no
# строка инициализации (взял с сайта программы),
# подробная справка по командам в приложениях
pin = 0362
init=AT+CPMS="ME"
#init = AT+CPMS="ME","ME","ME"
#init2 = AT+CNMI=1,1,0,2
# приоритет входящих сообщений
incoming = high
# хотим отчет о доставке
report = yes
# задержка перед отправкой
send_delay = 20
Код: Выделить всё
2008-11-14 13:32:51,2, smsd: Smsd v3.1 started.
2008-11-14 13:32:51,2, smsd: Running as root:wheel.
2008-11-14 13:32:51,6, smsd: File mode creation mask: 022 (0644, rw-r--r--).
2008-11-14 13:32:51,6, smsd: Outgoing file checker has started. PID: 4537.
2008-11-14 13:32:51,6, GSM0: Modem handler 0 has started. PID: 4538.
2008-11-14 13:32:51,6, GSM0: Checking device for incoming SMS
2008-11-14 13:32:51,6, GSM0: Checking if modem is ready
2008-11-14 13:32:54,3, GSM0: Modem is not clear to send
2008-11-14 13:33:04,7, GSM0: -> ^Z^M
2008-11-14 13:33:04,3, GSM0: Could not send character ^Z, cause: Operation not supported by device
2008-11-14 13:33:14,7, GSM0: -> AT^M
2008-11-14 13:33:14,3, GSM0: Could not send character A, cause: Operation not supported by device
Код: Выделить всё
device ucom
device uplcom
Не поняла причем тут comm port когда используется usb порт, но тем не менее добавила в ядро device ucom и device uplcom, собрала, но вывод kldstat -v | grep 'u[pl]*com' есть , вывод ls -lah /dev/cuaU* ничего не даетlexy писал(а):исходя из этого надо найти дровы для SE comm порта. у меня тоже без установки ucom и uplcom устройств юсби кабель не завелся.
если верить инфе вот отсюда :http://www.ru.freebsd.org/ru/releases/5 ... -i386.html
то это наш случай как в статье:
Код: Выделить всё
ugen0: at uhub1 port 2 (addr 2) disconnected
All threads purged from ugen0.7
All threads purged from ugen0.6
All threads purged from ugen0.4
All threads purged from ugen0.3
All threads purged from ugen0.2
All threads purged from ugen0.1
All threads purged from ugen0
ugen0: detached
ugen0: Sony Ericsson Sony Ericsson W700, rev 2.00/0.00, addr 2
uname -a
usbdevs -v
Код: Выделить всё
FreeBSD lily.ru 6.1-RELEASE FreeBSD 6.1-RELEASE #0: Fri Nov 14 16:49:34 MSK 2008 admin@lily.ru:/usr/obj/usr/src/sys/usb-26.10.2008 i386
Код: Выделить всё
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 addr 2: full speed, power 500 mA, config 1, Sony Ericsson W700(0xd056), Sony Ericsson(0x0fce), rev 0.00
Controller /dev/usb2:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 powered
port 2 powered
Порт пр том,что программа работает с модемом и через comm порт. ugen - это, как я понимаю, USB generic device , через него работать не будетRita писал(а): Не поняла причем тут comm port когда используется usb порт...
Код: Выделить всё
use Sys::Syslog;
use Text::Iconv;
# Events handlers functions
# EVT_eventname( $messagefile,\%headers, $body, $messageId)
# be careful with headers hash, it passed to sub by referece
sub EVT_received{
my ($msgFile,$headers, $body, $msgID)=@_;
#Add Your code here for handle RECEIVED event
logg("Message from $$headers{From}");
#Convert to russian UTF-8
if($$headers{Alphabet}=~/^U(n|C)/){
$body=$fromUCS->convert($body);
}
my $mailto='mail@to.me';
logg("Mailing incoming SMS to $mailto");
open(SENDMAIL, "|/usr/sbin/sendmail -t") or logg ("Can't fork for sendmail: $!",LOG_ERR,3);
print SENDMAIL <<"EOF";
From: SMS system <sms\@local>
To: <$mailto>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Subject: SMS C HOMEPA $$headers{From}
Отправитель: $fio ($$headers{From})
$body
EOF
close(SENDMAIL) or logg("sendmail didn't close nicely");
}
# Iconv converters
$LOCALE=$ENV{MM_CHARSET};
$toUCS=Text::Iconv->new($LOCALE, "UCS-2BE");
$fromUCS=Text::Iconv->new("UCS-2BE", $LOCALE);
Код: Выделить всё
To: 491721234567
To: 491721234567
To: 491721234567
To: 491721234567
To: 491721234567
To: 491721234567
Hello, this is the sms.
сколько я понял из курения манов - нет, но теоретически можно заставить, если в checkhandler наваять процедуру, которая будет спаунить подобное сообщение.m4rkell писал(а):А будет она отправлять если формат файла вот такой короче куча кому отправить надо одно и тоже:
Код: Выделить всё
To: 491721234567 To: 491721234567 To: 491721234567 To: 491721234567 To: 491721234567 To: 491721234567 Hello, this is the sms.
Код: Выделить всё
jabber# cat /root/scripts/email2sms.sh
#!/bin/sh
# Smsd can send eMails via SMS. You simply need to store the eMail as text
# file in the outgoing queue directory with a unique filename.
# The eMail must include the phone number in the To: field, for example:
# To: "Herbert +491721234567" <sms@localhost>
# This simple script creates a unique filename and copies the eMail from
# stdin to that file.
# If you use procmail to deliver local eMail. Create the user sms and create
# the file /home/sms/.procmailrc with this content:
# VERBOSE=off
# MAILDIR=/var/spool/mail
# DEFAULT=/var/spool/mail/sms
# LOGFILE=/var/log/procmail
#
# :0
# * ^TOsms
# | /usr/local/bin/email2sms
# If you use QMail and vpopmail you need the file
# /home/vpopmail/domains/your-domain/.qmail-sms with this content:
# | /usr/local/bin/email2sms
OUTFILE=$(mktemp /var/spool/sms/outgoing/smsgw.out.XXXXXX)
cat >$OUTFILE
#echo "SMS queued to $OUTFILE"
jabber#
Код: Выделить всё
jabber# cat /usr/local/etc/smsd.conf
# Example smsd.conf. Read the manual for a description
devices = GSM0
logfile = /var/log/smsd.log
loglevel = 7
[GSM0]
device = /dev/cuad0
init = AT+CPMS="SM"
incoming = yes
#pin = 1111
jabber#
Код: Выделить всё
..... skip ......
# sms router
sms_router:
driver = accept
local_parts = sms
domains = jabber.xxx.local
transport = sms_delivery
... skip .........
sms_delivery:
driver = pipe
command = /root/scripts/email2sms.sh
log_output
user = uucp
... skip .........