AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Cообщения о пропущенных вызовах на email

Newbies/FAQ Forum 20 сообщений -
#1

Cообщения о пропущенных вызовах на email


Здравствуйте, вопрос в том чтобы на почту шли сообщения о пропущенных вызовах.
Стоит Asterisk 1.8.25.0 на FreeBSD, сам с астериском до этого не сталкивался.
Перелопатив информацию в интернете, решил воспользоваться вариантом - http://asteriskforum.ru/viewtopic.php?t=2744
в extensions.conf добавил

extensions.conf
exten => s,1,Set(CALLERID(number)
exten => s,2,Set(num={EXTEN})
exten => s-BUSY,1,AGI(/usr/home/asterisk/scripts/dialstatus ${CALLERID(number) ${num})


создал соответственно
скрипт email
#!/bin/sh
file=/usr/home/asterisk/scripts/email
DATE=`date +%d.%m.%Y-%H:%M:%S`
callerid=$1
dest=$2
email=`cat $file | grep $dest |awk '{print $3}'`
/usr/local/bin/sendEmail -f (от кого) -t $email -u (тема ссобщения) $callerid -m (тело письма)

И в общем, не работает. по логам пусто, подозреваю что причина в не настроенном sendmail.
Можете подсказать куда копать или более простые варианты решения задачи?


Последний раз редактировалось: bdyl (Чт Фев 19, 2015 08:45)
#2

Вот так я отправляю факс на почту

ключи
-a файл с путями для прикрепления к письму (вам он не нужен)

остальное подделайте под себя

exten => 507,n,System(echo Fax System receive fax - time - ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M)} | mutt -s ${CALLERID(num)} -a ${FAXFILE} -- tech@firma.ru )

_________________
платный суппорт по мере возможностей
#3

bdyl писал(а):
на FreeBSD

на FreeBSD нет папки /opt и нет /opt/status/
Папки созданы ?

bdyl писал(а):
/usr/local/bin/sendEmail

Код:
# whereis sendEmail

Скорее всего выдаст пустоту, т.к. /usr/ports/net/sendemail не стоит.

bdyl писал(а):
/usr/home/asterisk/scripts/dialstatus

права на запуск ?

P.S. bdyl, А подумать над тем, что вы копипастите, не ?

Команда:
Код:
#rm -rf /

помогает решить все проблемы
#4

Цитата:

на FreeBSD нет папки /opt и нет /opt/status/

да нету, криво указал в оп-посте. на деле file=/usr/home/asterisk/scripts/email

sendemail отсутствует, да-да, глупый вопрос был, но тем не менее был задан, я так понял что его надо установить и настроить.

Цитата:
#rm -rf /
очень помогло, спасибо!

мой уровень владения фряхой на уровне открой и копипасть задумываясь, так что я не думаю что мои ошибки вас удивляют.
#5

Собсна исправил свои предыдущие ошибки. дал права на исполнение email и dialstatus.
sendEmail установил.
По логам вижу что пусто, в чем дело понять не могу. Можете подсказать куда копать?


Последний раз редактировалось: bdyl (Ср Фев 25, 2015 11:06)
#6

Исходя из:
bdyl писал(а):
Код:
exten => s,1,Set(CALLERID(number)
exten => s,2,Set(num={EXTEN})
exten => s-BUSY,1,AGI(/usr/home/asterisk/scripts/dialstatus ${CALLERID(number) ${num})

Ответом на:
bdyl писал(а):
Можете подсказать куда копать?

Будет:
Для начала в сторону книжки "Астериск будущее телефонии", для получения знаний по dialplan, как он работает.
Затем в сторону вопроса самому себе: А как и кто перенаправит вызов для исполнения экстена s-BUSY ? При каких условиях он выполнится ?
Затем в сторону понимания что есть DIALSTATUS и exten h.
Затем в сторону консоли астериска с ключенным verbose с левел 3, дабы увидеть как отрабатывается dialplan.
Ну а затем видно будет что далее.
#7

virus_net
Спасибо вам большое!
В общем, заставили головой думать, а не тупо спрашивать.
В итоге реализовал через - exten =>s-NOANSWER,n,System(/usr/local/bin/sendEmail -f from@mail -t to@mail -u ${CALLERID(number)} -m ${CALLERID(number)} -s host@mail -xu login@mail -xp password)
#8

Пытаюсь реализовать вот так:
same => s-NOANSWER,n,System(/etc/asterisk/vv.sh ${CALLERID(number)} ${CALLERID(number)})

не проглатывает строчку:
WARNING[11367]: pbx_config.c:1586 pbx_load_config: Invalid priority/label 's-NOANSWER' at line 77 of extensions.conf

если нужно, представлю всю секцию экстеншена.
#9

в
Код:
same=>
не может быть никаких меток(s-NOANSWER), либо делайте переход не по метке а по приоритету, либо описывайте отдельный
Код:
exten=>s-NOANSWER
в этом же контексте
#10

Bobby, воспользуйтесь советом выше:
Цитата:
в сторону книжки "Астериск будущее телефонии", для получения знаний по dialplan, как он работает.

т.к. исходя из вашего вопроса вы явно не ведаете как работает dialplan
#11

почитал про экстеншены.
не могу понять по какому принципу действует NOANSWER. В какое место его вставлять.
вот что пробовал.

exten => operator,1,NoOp()
same => n,Verbose(Call: ${CALLERID(name)})
same => n,Set(CALLERID(num)=${CALLERID(name)})
same => n,GotoIf($["foo${CALLERID(name)}" = "foo79856421094"]?deny,1)
same => n,System('/var/www/localhost/lol/callerid.php ${CALLERID(name):1} G10')
same => n,Set(fname=${STRFTIME(${EPOCH},,%Y.%m.%d_%H-%M)} - ${CALLERID(number)}-${EXTEN})
same => n,MixMonitor(${fname}.wav)
same => n,Dial(SIP/707,,20)
same => n,Goto(s-NOANSWER,1)
same => n,Queue(q-ops,nt,,,15)
same => n,Queue(q-accs,nt,,,300)
same => n,Voicemail(1234)
same => n,StopMixMonitor
same => n,System('/var/www/localhost/lol/attachcallrecord.php ${CALLERID(name):1} "/data/asterisk/monitor/${fname}.wav"')
same => n,Hangup()

exten => s-NOANSWER,1,System(/etc/asterisk/vv.sh ${CALLERID(number)} ${CALLERID(number)})
#13

почитал, спасибо.

с NO ANSWER разобрался, работает только если за определенный период времени ожидания пользователь не ответил и система перешла к след. приоритету.
Но как быть если звонящий сам не дождался ответа и повесил трубку (соответственно система не успела перейти к след приоритету).
В таком случае DIALSTATUS не записывается.
#14

При разрыве звонка (не важно кто положил трубку) происходит переход к экстену h - вот в нем и обрабатываете результат.
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#15

спасибо, и с этим разобрался.

теперь вопрос, почему не отрабатывает мой скрипт?
same => n,System(/etc/asterisk/vv.sh ${CALLERID(num)} missed_call)
обычное echo отрабатывается здесь

с павами проблем нет, из консоли скрипт работает
#16

астериск от кого стартует ?
#17

от юзера asterisk
#18

Bobby писал(а):
с павами проблем нет, из консоли скрипт работает

а консоль запущена с правами asterisk ?
а в vv.sh что ? там внутри наверняка ведь ещё какие то бинари исполняются. А пути до этих бинарей абсолютные или относительные ? Должны быть абсолютные, т.к. в asterisk ничего не знает о переменных окружения:
Код:
# env
...skiped...
PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
...skiped...
#19

консоль от рута.
для asterisk /sbin/nologin

пути прописал абсолютные, добавил /bin/sh перед скриптом
не помогло


по ходу прав на запуск sh нету у юзера asterisk
#20

попробовал под юзером asterisk запуск скрипта из консоли, работает.
странная тема...

у меня в диалплане запускаются php скрипты, так они работают.