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)
ключи
-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 )
_________________
платный суппорт по мере возможностей
| 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 / |
помогает решить все проблемы
| Цитата: |
| на FreeBSD нет папки /opt и нет /opt/status/ |
да нету, криво указал в оп-посте. на деле file=/usr/home/asterisk/scripts/email
sendemail отсутствует, да-да, глупый вопрос был, но тем не менее был задан, я так понял что его надо установить и настроить.
| Цитата: |
| #rm -rf / |
мой уровень владения фряхой на уровне открой и копипасть задумываясь, так что я не думаю что мои ошибки вас удивляют.
sendEmail установил.
По логам вижу что пусто, в чем дело понять не могу. Можете подсказать куда копать?
Последний раз редактировалось: bdyl (Ср Фев 25, 2015 11:06)
| 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.
Ну а затем видно будет что далее.
Спасибо вам большое!
В общем, заставили головой думать, а не тупо спрашивать.
В итоге реализовал через - 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)
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
если нужно, представлю всю секцию экстеншена.
| Код: |
| same=> |
| Код: |
| exten=>s-NOANSWER |
| Цитата: |
| в сторону книжки "Астериск будущее телефонии", для получения знаний по dialplan, как он работает. |
т.к. исходя из вашего вопроса вы явно не ведаете как работает dialplan
не могу понять по какому принципу действует 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)})
с NO ANSWER разобрался, работает только если за определенный период времени ожидания пользователь не ответил и система перешла к след. приоритету.
Но как быть если звонящий сам не дождался ответа и повесил трубку (соответственно система не успела перейти к след приоритету).
В таком случае DIALSTATUS не записывается.
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
теперь вопрос, почему не отрабатывает мой скрипт?
same => n,System(/etc/asterisk/vv.sh ${CALLERID(num)} missed_call)
обычное echo отрабатывается здесь
с павами проблем нет, из консоли скрипт работает
| 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... |
для asterisk /sbin/nologin
пути прописал абсолютные, добавил /bin/sh перед скриптом
не помогло
по ходу прав на запуск sh нету у юзера asterisk
странная тема...
у меня в диалплане запускаются php скрипты, так они работают.