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

Cоединение двух абонентов по SIP-каналу

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

Здраствуйте! Читаю книгу Asterisk:Будущее телфонии, несколько раз прочитал раздел контексты и диалплан, но всё равно не могу понять, что не так делаю. Есть сервер астериск, создал двух абонентов в sip.conf, сделал программные телефоны на двух копьютерах(зарегестрировало их), но не получается их соединить.
Вот, например, один телефончик с номер 302, второй 303, диалплан пишу таким образом:

[employes]
exten=>302, 1, Dial(SIP/302)
exten=>303, 1, Dial(SIP/303)

Не могу понять до конца как он работает, при наборе номера 302, будет вызвваться канал SIP, а через черточку идентификатор какой то, это что?
И ещё - в sip.conf нужно вписывать для абонентов контекст?
#2

покажите sip.conf
секции где описываете номера 302 и 303
#3

[302]
type=friend
secret=302
host=dynamic

[303]
type=friend
secret=303
host=dynamic
#4

В настройках sip.conf надо еще и контекст указать:
context=имя_контекста

_________________
Внимание! Свет в конце тоннеля может быть светом фар приближающегося поезда!
Ubuntu 10.04/12.04 - Asterisk 1.8.11.0-rc2/1.8.14.1/1.8.17.0/10.10.0
#5

Т.е. context=employes ?
А сам контекст правильно написан? Что пишеться после слеша в "SIP/?" - там номер по которому дозваниваться?
#6

2_Ultras_FCMK

Угумс.
SIP/НОМЕР_куда_звоним
Ваш пример можно записать так
exten => _XXX,1,Dial(SIP/${EXTEN})
То есть по русски
_XXX - Это шаблон, если введено 3 числа, то необходимо перейти сюда.
1 - Это начало вашего екстеншена, дальше можно писать букву n для того что бы цифры не писать и окончательно запутаться
Dial - команда - говорящая что необходимо соединить каналы тыц тыц или грубо говоря позвонить
SIP - тип канала, обязательно должен быть зарегистрирован в системе, в вашем примере это SIP канал из sip.conf, бывают еще Zap, IAX2 и так далее
${EXTEN} - переменная содержащая номер канала в вашем примере это или 302 или 303 из sip.conf

А вообще читайте!

_________________
Мы всегда можем уметь...
#7

Спасибо огромное, получилось всё, добавив контекст!

А ${EXTEN} написано сохраняет добавочный номер в переменной канала, не совсем могу понять...т.е. я могу уже не писать для отдельного номер приложение диал, а просто эта переменная "грубо говоря" сама понимает по какому каналу ей звонить?
#8

эта переменная показывает какой номер был набран
если у Вас соответствует номер абоненту, то можно использовать.

но, у вас будет тогда небошьшая проблемка, а именно:
номер _XXX = 000, 010, 999, 103 и так далее, а SIP у Вас допустим только 302 и 303
при наборе 304 - будет неудачная попытка позвонить на SIP/304


это можно более корректно описать, что бы таких проблем не было.

если у Вас только 302 и 303, ну или допустим 300-309
exten => _30X,1,Dial(SIP/${EXTEN})
#9

а где показывает? или это условно сказано?

Получилось, спасибо!
Мне как раз надо где то такое к-во номеров от 300 до 309, но я не понял :

"номер _XXX = 000, 010, 999, 103 и так далее, а SIP у Вас допустим только 302 и 303
при наборе 304 - будет неудачная попытка позвонить на SIP/304"

я понимаю что х это от 0 до 9, по этому могу звонить на номер от 000 до 999, но почему вы сказли, что при наборе 304 будет неудачная попытка позвонить?
#10

я же написал, что ДОПУСТИМ у вас 302 и 303 есть, а SIP/304 просто нету.

Added after 53 seconds:

Ultras_FCMK @ Пн Окт 15, 2012 17:10 писал(а):
а где показывает? или это условно сказано?

показывает в номерном плане
#11

2_adt2k
Для ошибочных номеров есть CHANUNAVAIL =)

2_Ultras_FCMK

Все достаточно просто.
Для того что бы "позвонить" необходимо * сказать какие номера у Вас есть, для этого существует sip.conf (и прочие). В sip.conf вы обьявляете, мол есть 301,302,303 и так далее.
В результате * понимает куда "звонить". Если у Вас в sip.conf только 302 и 303 то при попытке "позвонить" будет ошибка, такого номера вообще не существует для астера!

Вообще советую разочек заглянуть в Asterisk asterisk будущее телефонии, вопросы отвалятся как грязь.

Посмотреть какие зарегистрированы пиры можно в шеле команда sip show peers

_________________
Мы всегда можем уметь...
#12

nikto @ Пн Окт 15, 2012 17:35 писал(а):
2_adt2k
Для ошибочных номеров есть CHANUNAVAIL =)

ну да. НО вместо неуместных комментариев, нужно либо написать что сделать, либо промолчать.
напишите человеку как использовать функцию
#13

2_adt2k Извините если обидел.

Как использовать функцию:
В этом же контексте ниже 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

_________________
Мы всегда можем уметь...
#14

nikto @ Пн Окт 15, 2012 18:23 писал(а):
2_adt2k Извините если обидел.

причем тут обида? Smile

вот по делу, опять,
Цитата:
same => n,GoTo(s-${DIALSTATUS}) ;

а в номерном плане нету на другие состояния экстов.

можно использовать GotoIf (в книжке есть описание) для перехода.
можно несколько подрят использовать, на разные состояния, например на ANSWER сказать "спасибо за звонок" и так далее.
#15

2_adt2k

Согласен, в моем примере нет перехода на другие состояния, но я привел пример на CHANUNAVAIL (о котором упомянул) но при этом написал что есть другие состояния к примеру BUSY. В конце концов можно сделать заглушку

Код:

exten => s-,1,NoOp()

А дальше по необходимости добавлять нужные состояния.

По поводу ANSWER, то после разрыва соединения, переход будет на h екстеншен, тут ни gotoif ни просто goto не возможно использовать.
Хотя конечно уже в h можно проверить переменную DIALSTATUS.

_________________
Мы всегда можем уметь...
#16

Smile
и того, имеем конструкцию:

Код:
[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 будет обрабатываться
#17

Откуда звоним и куда? Если в примере который дал нам уважаемый Ultras_FCMK то там BUSY может быть только если сами себе звоним =)

Если так то:
Код:

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. Я вот, что тут подумал. О чем спор то?

_________________
Мы всегда можем уметь...
#18

да спора то нет.
но разве нельзя получить в ${DIALSATUS} BUSY ? или что то другое. (на вопрос можно не отвечать)

Ultras_FCMK
пора включаться в дискуссию, или тему можно закрыть.
#19

Для начала (читая книгу не встречал такого), вот первый раз встретил "same=>" - это тоже самое что и "exten=>"?


"[employes]
exten => _30X,1,Dial(SIP/${EXTEN})
same => n,GoTo(s-${DIALSTATUS}) ; Тут мы указываем что необходимо перейти на екстеншен s-статус_звонка существующие статусы можно посмотреть по ссылке выше"

он переходит на строку нижу в случае не выполнения предыдущий(exten => _30X,1,Dial(SIP/${EXTEN}) ? т.е. не дозвона абоненту(соединения абонентов)?
#20

2_Ultras_FCMK

1. Откровенно говоря, я так же это встретил случайно тут почему этого нет в книге ХЗ.
Среди других улучшений - новый синтаксис, призванный упростить процесс написания скриптов диалплана. Расширение позволяет программистам пропускать добавочный номер или идентификатор паттерна в многострочном скрипте, используя ключевое слово "same"


2. Да, все верно, переходит на GoTo а дальше куда пошлете (в нашем примере, посылаем на DIALSTATUS).
Однако, как верно заметил adt2k, если передать ключ g, то выполнение диалплана продолжиться в текущем контексте, после того как вызываемый абонент повесит трубку.

_________________
Мы всегда можем уметь...
#21

Сейчас занялся голосовй почтой и конференцией.

Мой 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 нужно прописать???), на почту ничего не пришло( может совсем не понял что это за почта).

Вот такие вот пироги...помогите доразобраться, заранее спасибо!
#22

2_Ultras_FCMK
Насчет конференции не подскажу, но то что Вы хотите в первой половине делается так

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 ?

А если честно, я так и не понял фишки с мылом, сделал просто уведомление на почту о том что звонили и ладушки.
Тем более что простой цифровой пароль это уже дырка в безопасности, а сложный на телефоне не набрать.

_________________
Мы всегда можем уметь...
#23

А да пропишу, спасибо. А там какой то модуль ещё ставить надо для голосовой почты вроде, как узнать стоит он или нет?
#24

гм, если Вас уж на гугле залочили, то можно тут пошукать.
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)
#25

Сейчас такой extensions.conf:

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с, то сразу отключается никуда не перенаправляет(
#26

хватит заставлять нас читать вам книгу, читайте сами

ЗЫ зачем вы лезете в голосовую почту - у вас еще начальная настройка хромает.
#27

возьмите себе сборку или freepbx поставьте, чтоб не ручками...
#28

2_Ultras_FCMK
Я ничего не понял (читал 3 раза).
Если звонить на 305, то ясен пень работать не будет! Такого номера нет в sip ни voisemail.
По поводу Вашего софтфона вообще ничего неизвестно, сложно сказать, что он делает.

Для разбора проблем в первую очередь научитесь работать с логами! Зайдите в консоль asterisk -rvvv и смотрите что происходит!
Настройте логирование всего и вся в /etc/asterisk/logger.conf (я себе добавил полное логирование full=>notice,warning,error,debug,verbose,dtmf,fax ) после чего в /var/log/asterisk/full будет записываться каждый чих.

_________________
Мы всегда можем уметь...
#29

awsswa @ Пт Окт 19, 2012 09:19 писал(а):
хватит заставлять нас читать вам книгу, читайте сами

ЗЫ зачем вы лезете в голосовую почту - у вас еще начальная настройка хромает.
\

Что имеете ввиду под начальной настройкой?

Added after 1 minutes:

nikto @ Пт Окт 19, 2012 09:48 писал(а):
2_Ultras_FCMK
Я ничего не понял (читал 3 раза).
Если звонить на 305, то ясен пень работать не будет! Такого номера нет в sip ни voisemail.
По поводу Вашего софтфона вообще ничего неизвестно, сложно сказать, что он делает.

Для разбора проблем в первую очередь научитесь работать с логами! Зайдите в консоль asterisk -rvvv и смотрите что происходит!
Настройте логирование всего и вся в /etc/asterisk/logger.conf (я себе добавил полное логирование full=>notice,warning,error,debug,verbose,dtmf,fax ) после чего в /var/log/asterisk/full будет записываться каждый чих.


Я зарегестрировал 305, он есть и в sip и в voicemail