Вот, например, один телефончик с номер 302, второй 303, диалплан пишу таким образом:
[employes]
exten=>302, 1, Dial(SIP/302)
exten=>303, 1, Dial(SIP/303)
Не могу понять до конца как он работает, при наборе номера 302, будет вызвваться канал SIP, а через черточку идентификатор какой то, это что?
И ещё - в sip.conf нужно вписывать для абонентов контекст?
секции где описываете номера 302 и 303
type=friend
secret=302
host=dynamic
[303]
type=friend
secret=303
host=dynamic
context=имя_контекста
_________________
Внимание! Свет в конце тоннеля может быть светом фар приближающегося поезда!
Ubuntu 10.04/12.04 - Asterisk 1.8.11.0-rc2/1.8.14.1/1.8.17.0/10.10.0
А сам контекст правильно написан? Что пишеться после слеша в "SIP/?" - там номер по которому дозваниваться?
Угумс.
SIP/НОМЕР_куда_звоним
Ваш пример можно записать так
exten => _XXX,1,Dial(SIP/${EXTEN})
То есть по русски
_XXX - Это шаблон, если введено 3 числа, то необходимо перейти сюда.
1 - Это начало вашего екстеншена, дальше можно писать букву n для того что бы цифры не писать и окончательно запутаться
Dial - команда - говорящая что необходимо соединить каналы тыц тыц или грубо говоря позвонить
SIP - тип канала, обязательно должен быть зарегистрирован в системе, в вашем примере это SIP канал из sip.conf, бывают еще Zap, IAX2 и так далее
${EXTEN} - переменная содержащая номер канала в вашем примере это или 302 или 303 из sip.conf
А вообще читайте!
_________________
Мы всегда можем уметь...
А ${EXTEN} написано сохраняет добавочный номер в переменной канала, не совсем могу понять...т.е. я могу уже не писать для отдельного номер приложение диал, а просто эта переменная "грубо говоря" сама понимает по какому каналу ей звонить?
если у Вас соответствует номер абоненту, то можно использовать.
но, у вас будет тогда небошьшая проблемка, а именно:
номер _XXX = 000, 010, 999, 103 и так далее, а SIP у Вас допустим только 302 и 303
при наборе 304 - будет неудачная попытка позвонить на SIP/304
это можно более корректно описать, что бы таких проблем не было.
если у Вас только 302 и 303, ну или допустим 300-309
exten => _30X,1,Dial(SIP/${EXTEN})
Получилось, спасибо!
Мне как раз надо где то такое к-во номеров от 300 до 309, но я не понял :
"номер _XXX = 000, 010, 999, 103 и так далее, а SIP у Вас допустим только 302 и 303
при наборе 304 - будет неудачная попытка позвонить на SIP/304"
я понимаю что х это от 0 до 9, по этому могу звонить на номер от 000 до 999, но почему вы сказли, что при наборе 304 будет неудачная попытка позвонить?
Added after 53 seconds:
| Ultras_FCMK @ Пн Окт 15, 2012 17:10 писал(а): |
| а где показывает? или это условно сказано? |
показывает в номерном плане
Для ошибочных номеров есть CHANUNAVAIL =)
2_Ultras_FCMK
Все достаточно просто.
Для того что бы "позвонить" необходимо * сказать какие номера у Вас есть, для этого существует sip.conf (и прочие). В sip.conf вы обьявляете, мол есть 301,302,303 и так далее.
В результате * понимает куда "звонить". Если у Вас в sip.conf только 302 и 303 то при попытке "позвонить" будет ошибка, такого номера вообще не существует для астера!
Вообще советую разочек заглянуть в Asterisk asterisk будущее телефонии, вопросы отвалятся как грязь.
Посмотреть какие зарегистрированы пиры можно в шеле команда sip show peers
_________________
Мы всегда можем уметь...
| nikto @ Пн Окт 15, 2012 17:35 писал(а): |
| 2_adt2k Для ошибочных номеров есть CHANUNAVAIL =) |
ну да. НО вместо неуместных комментариев, нужно либо написать что сделать, либо промолчать.
напишите человеку как использовать функцию
Как использовать функцию:
В этом же контексте ниже Dial можно указать, что делать если занято, не ответили или была ошибка набора.
Для этого используется переменная DIALSTATUS тыц . Переменной присваивается какое либо значение по результатам «звонка». Далее мы можем данный статус использовать для каких либо действий, к примеру сказать звонящему что номера не существует. Или если номер занят (BUSY) отправить уведомление на e-mail.
Пример:
| Код: |
| [employes] exten => _30X,1,Dial(SIP/${EXTEN}) same => n,GoTo(s-${DIALSTATUS}) ; Тут мы указываем что необходимо перейти на екстеншен s-статус_звонка существующие статусы можно посмотреть по ссылке выше exten => s-CHANUNAVAIL,1, Wait(1) ; Тут мы говорим что надо подождать 1 секунду same => n,PlayBack(pbx-invalid) ; Скажем что набранный номер не верный. same => n,Wait(1) ;Опять подождем секунду same => n,Hangup() ; «Положим трубку» |
Обязательно обратите внимание, что у меня в папке /usr/share/asterisk/sounds/ru/ есть такой файл pbx-invalid и у меня в sip.conf в секции [general] переопределен язык на language=ru
_________________
Мы всегда можем уметь...
| nikto @ Пн Окт 15, 2012 18:23 писал(а): |
| 2_adt2k Извините если обидел. |
причем тут обида?
вот по делу, опять,
| Цитата: |
| same => n,GoTo(s-${DIALSTATUS}) ; |
а в номерном плане нету на другие состояния экстов.
можно использовать GotoIf (в книжке есть описание) для перехода.
можно несколько подрят использовать, на разные состояния, например на ANSWER сказать "спасибо за звонок" и так далее.
Согласен, в моем примере нет перехода на другие состояния, но я привел пример на CHANUNAVAIL (о котором упомянул) но при этом написал что есть другие состояния к примеру BUSY. В конце концов можно сделать заглушку
| Код: |
| exten => s-,1,NoOp() |
А дальше по необходимости добавлять нужные состояния.
По поводу ANSWER, то после разрыва соединения, переход будет на h екстеншен, тут ни gotoif ни просто goto не возможно использовать.
Хотя конечно уже в h можно проверить переменную DIALSTATUS.
_________________
Мы всегда можем уметь...
и того, имеем конструкцию:
| Код: |
| [employes] exten => _30X,1,Dial(SIP/${EXTEN}) same => n,GoTo(s-${DIALSTATUS}) ; Тут мы указываем что необходимо перейти на екстеншен s-статус_звонка существующие статусы можно посмотреть по ссылке выше exten => s-CHANUNAVAIL,1, Wait(1) ; Тут мы говорим что надо подождать 1 секунду same => n,PlayBack(pbx-invalid) ; Скажем что набранный номер не верный. same => n,Wait(1) ;Опять подождем секунду same => n,Hangup() ; «Положим трубку» exten => s-,1,NoOp() |
звоним абоненту 302, получаем статус BUSY. в конструкции предполагается переход на s-BUSY, но его нету!
необходимо добавить s-состояние, никакая заглушка не нужна
либо можно сделать
| Код: |
| exten => _s-.,1,NoOp() |
а вообще лучше использовать GotoIf, там где это нужно
а по поводу обработки звонка после того, как 30Х положит трубку, нужно просто добавить параметры _30X,1,Dial(SIP/${EXTEN},60,g)
так и ANSWER будет обрабатываться
Если так то:
| Код: |
| exten => _30[23],1,GoToIf($[${CALLERID(nom)}=${EXTEN}]?drop_this_call) same => n,Dial(SIP/${EXTEN},60,g) same => n,GoTo(s-${DIALSTATUS}) same => n(drop_this_call),Hangup() |
По хорошему такого рода екстеншены надо оборачивать в макрос.
По поводу занято, если я ничего не хочу делать то и не обязан, сделаю заглушку =)
P.S. Я вот, что тут подумал. О чем спор то?
_________________
Мы всегда можем уметь...
но разве нельзя получить в ${DIALSATUS} BUSY ? или что то другое. (на вопрос можно не отвечать)
Ultras_FCMK
пора включаться в дискуссию, или тему можно закрыть.
"[employes]
exten => _30X,1,Dial(SIP/${EXTEN})
same => n,GoTo(s-${DIALSTATUS}) ; Тут мы указываем что необходимо перейти на екстеншен s-статус_звонка существующие статусы можно посмотреть по ссылке выше"
он переходит на строку нижу в случае не выполнения предыдущий(exten => _30X,1,Dial(SIP/${EXTEN}) ? т.е. не дозвона абоненту(соединения абонентов)?
1. Откровенно говоря, я так же это встретил случайно тут почему этого нет в книге ХЗ.
Среди других улучшений - новый синтаксис, призванный упростить процесс написания скриптов диалплана. Расширение позволяет программистам пропускать добавочный номер или идентификатор паттерна в многострочном скрипте, используя ключевое слово "same"
2. Да, все верно, переходит на GoTo а дальше куда пошлете (в нашем примере, посылаем на DIALSTATUS).
Однако, как верно заметил adt2k, если передать ключ g, то выполнение диалплана продолжиться в текущем контексте, после того как вызываемый абонент повесит трубку.
_________________
Мы всегда можем уметь...
Мой extensions.conf:
exten => _30X, 1, Dial(SIP/${EXTEN},10)
exten => 303, n, VoiceMail(303@voice,u) | екстен для голосовй почты, если при звонке на 303 нету ответа 10 с, то перенаправляется на следующий приоритет (тобиш этот) и срабатывает опция u (сообщение о недоступности)
exten => 600, 1, MeetMe (600, i, 54321) | екстен для конференции, при наборе 600 попадаешь в комнату, пароль 54321. Вот незнаю правильно я написал его с приоритетом 1 после тех екстенов???
Мой voicemail.conf:
[voice]
303 => 1234, 303 [, omen0310@yandex.ru] | это не совсем понял, сначало пароль, а потом имя ( в моем случае я так понимаю 303 (т.к. в sip.conf прописал username=303, это отсюда берёт??? ), дальше свой почтовый ящик - я могу его таким задать??? )
Мой meetme.conf:
[rooms]
conf => 600 | комната для конференции
#include meetme_additional.conf | вот не понял это перед контекстом ставить или после? или он вообще не нужен?(в файле сразу прописан был)
Вот такие конф. файлы.
Конференция не получается, пользуюсь SJphone (там посредине есть кнопка CONF (предпологаю что это конференция), нажимаю её и при наборе 600, буквально 1с показует экран набора и перестаёт).
Головая почта - при наборе и ожидании 10 сек действительно телефон перенаправляется, но к сожелению нету колонок (там должно быть голосове сообщение о недоступности?, но идёт этот процес бесконечно, может приложение HangUp нужно прописать???), на почту ничего не пришло( может совсем не понял что это за почта).
Вот такие вот пироги...помогите доразобраться, заранее спасибо!
Насчет конференции не подскажу, но то что Вы хотите в первой половине делается так
exten => _30X, 1, Dial(SIP/${EXTEN},10)
same => n,VoiceMail(${EXTEN}@voice,u)
По вашему коду
1. Ошибка, в первой строке пишите шаблон _30X а во второй уже четко определяете 303.
2. Но, при это пишите что это n шаг на экстеншене 303.
3. Не отправляется на почту? Нужно настраивать почтовую службу на машине с астером, или писать скрипт отправки.
4. Sip.conf прописали для 303, mailbox=303@voice ?
А если честно, я так и не понял фишки с мылом, сделал просто уведомление на почту о том что звонили и ладушки.
Тем более что простой цифровой пароль это уже дырка в безопасности, а сложный на телефоне не набрать.
_________________
Мы всегда можем уметь...
http://asteriskforum.ru/viewtopic.php?t=9601
Если в гугле не залочили то вот куча ссылок с первой страницы
http://habrahabr.ru/sandbox/42201/ (погорячился, но как пример можно использовать)
http://asterisk-support.ru/forum/topics/349/
http://asterisk-support.ru/question/1518 ... voicemail/
http://forum.asterisk.ru/viewtopic.php?f=3&t=1291
Узнать стоит или нет. У меня убунта
aptitude search ~ipostfix ~isenmail ~iqmail ~iSsmtp ~iNullmailer (~i обязательна)
Если ничего не появиться, значит нет ничего =(
_________________
Мы всегда можем уметь...
Последний раз редактировалось: nikto (Пт Окт 19, 2012 09:07)
exten => _30X, 1, Dial(SIP/${EXTEN},10)
exten => n,VoiceMail(${EXTEN}@voice,u)
В sip.conf прописал mailbox=303@voice
Т.е. звоним 303, в ${EXTEN} значение 303, т.е. голосвая почта 303@voice, абонент который звонит попадает на его почту, он слышит сообщение о недоступности и после того как прослушал, может оставить сообщение. Но если почтовый ящик не зарегестрирован, то мы не можем попасть на него, то соответственно и услышать сообщение о недоступности, правильно понимаю?? В софтфон приходит какое то сообщение на почту, но его не могу просмотреть, пишет, что не настроена (обратитесь к провайдеру). Т.е. вроде всё правильно, просто не работает из-за того что не настроена почта?
Added after 6 minutes:
При таком конфе, уже и сообщение в "типа почту" в софтфоне не приходит( Как правильно написать, что бы работала как то и возможно вообще это увидеть без "конфигурации почты у провайдера" (как написало в софтфоне)?
Added after 4 minutes:
После звонка и когда пройдет 10с, то сразу отключается никуда не перенаправляет(
ЗЫ зачем вы лезете в голосовую почту - у вас еще начальная настройка хромает.
Я ничего не понял (читал 3 раза).
Если звонить на 305, то ясен пень работать не будет! Такого номера нет в sip ни voisemail.
По поводу Вашего софтфона вообще ничего неизвестно, сложно сказать, что он делает.
Для разбора проблем в первую очередь научитесь работать с логами! Зайдите в консоль asterisk -rvvv и смотрите что происходит!
Настройте логирование всего и вся в /etc/asterisk/logger.conf (я себе добавил полное логирование full=>notice,warning,error,debug,verbose,dtmf,fax ) после чего в /var/log/asterisk/full будет записываться каждый чих.
_________________
Мы всегда можем уметь...
| awsswa @ Пт Окт 19, 2012 09:19 писал(а): |
| хватит заставлять нас читать вам книгу, читайте сами ЗЫ зачем вы лезете в голосовую почту - у вас еще начальная настройка хромает. |
Что имеете ввиду под начальной настройкой?
Added after 1 minutes:
Я зарегестрировал 305, он есть и в sip и в voicemail