Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Программный подъем трубки при исходящем

0

Добрый день! С Астериском знаком совсем недавно (неделю с ним воюю), имеется Астер 11, убунту сервер 12.04, модуль Chan_dongle с модемами 1550, и 2 сип телефона. В режиме звонков все работает нормально, но есть еще прога (самописная) которая цепляется к астеру через AMI, она должна отправлять и принимать звонки, с приемом все нормально, а вот с отправкой такая беда - при отправке звонка в сип линию начинает звонить сип телефон, и после подъема трубки набирается номер абонента, либо есть вариант что сначала набирается номер абонента, а после его ответа звонит телефон оператора - это не устраивает! Руководство поставило задачу сделать так, чтобы при звонке программно поднималась трубка на сипе, и чтобы идущие гудки были слышны. Решил включить в диалплан answer-after=0, но оно работает только как автоответ при звонках извне, а если звонок провоцируется из AMI подъем трубки не отрабатывает! Тоесть к диалплану с подъемом трубки Астер приходит уже после физического подъема трубки... Третий день бьюсь, подскажите куда копать, а то уже руки опускаются...

удалить закрыть спам изменить тег редактировать

спросил 2014-11-22 19:39:28 +0400

dmitry0608@mail.ru Gravatar dmitry0608@mail.ru
1 1

Comments

Switch, oгромное спасибо что откликнулся! Отправляю в Астер через AMI вот это: Action: Originate Channel: SIP/106 Exten: 89000000000 CallerId: 89000000000 Priority: 1 Context: from-internal Async: true ActionID: astOriginal

Получаю звонок на трубку, поднимаю трубку - идет отзвон на указанный номер, пытался отправлять вот это (то что отправляется прогой по AMI): Action: Originate Channel: Local/106@phones Exten: 89528402901 CallerId: 89528402901 Priority: 1 Context: from-internal Async: true ActionID: astOriginal Но в диалплане не смог создать соответствующие контексты, точнее не могу понять куда попадает звонок из AMI и как отрабатывает функция Originate(В каком контексте)? Диалплан from-internal приводить? Правда там банальный отзвон через Chan_dongle... В контексте [phones] прописывал answer-after=0, но до него вызов не доходил, local не смог корректно реализовать, буду очень признателен если покажешь как это сделать!

dmitry0608@mail.ru ( 2014-11-22 22:04:40 +0400 )редактировать

http://www.voip-info.org/wiki/view/Asterisk+local+channels

Local/106@phones => попадет в контекст phones и будет там искать 106

virus_net ( 2014-11-23 10:02:18 +0400 )редактировать

Не попадает, не может найти канал Local, в том-то все и дело! Если просто написать SIP/106 то все работает, ну вернее звонит и по подъему трубки переадресовывает, а вот с Local/* Ни в какую!

dmitry0608@mail.ru ( 2014-11-23 15:51:55 +0400 )редактировать

ну а в CLI что пишет ?

что показывает: dialplan show 106@phones

такой exten то вообще есть ?

virus_net ( 2014-11-24 10:50:37 +0400 )редактировать

Есть в диалплане контекст [phones], в который по идее должен попадать вызов, а вообще диалплан 100% косячный, не умею я их еще писать толком, на "dialplan show 106@phones" CLI ругается ттрехэтажным матом, написал еще контекст [autoanswer], но 106@autoanswer тоже не находит...

dmitry0608@mail.ru ( 2014-11-24 11:36:10 +0400 )редактировать

добавьте в конце /n

Local/106@phones/n

Olpag ( 2014-11-24 11:39:10 +0400 )редактировать

Добавлял /n, ничего не меняется, в ответ от астера по AMI приходит вот это:

Event: Hangup Privilege: call,all Channel: Local/106@phones-00000004;1 Uniqueid: 1416815569.14 CallerIDNum: 89** CallerIDName: <unknown> ConnectedLineNum: 89** ConnectedLineName: <unknown> AccountCode: Cause: 0 Cause-txt: Unknown

Event: OriginateResponse Privilege: call,all ActionID: astOriginal Response: Failure Channel: Local/106@phones/n Context: from-internal Exten: 89** Reason: 0 Uniqueid: <null> CallerIDNum: 89** CallerIDName: <unknown>

Event: PeerStatus Privilege: system,all ChannelType: SIP Peer: SIP/106 PeerStatus: Registered Address: 192.168.5.106:5060

А можно пример диалплана с Local? А то все что смог найти -это общий вариант Local/extension@context... Как это будет интерпритировано на данный вариант? Local/106@phones? Затем создаем контекст phones с планом набора, а 106 - это имя сип-пира, я правильно понимаю? Или его еще где-то кроме sip.conf описывать?

dmitry0608@mail.ru ( 2014-11-24 11:55:32 +0400 )редактировать

Толи лыжи не едут, толи я... Чего-то недопонимаю!

extensions.conf

[from-internal]

exten => _XXXXXXXXXXX,1,Dial(Dongle/Rezerv1/${EXTEN},60)

[phones]

exten => _X.,1,SIPAddHeader(Call-info: answer-after=0)

exten => _X.,n,Dial(Dongle/Rezerv2/${EXTEN},60)

Отправляю по AMI вот это

Action: Originate

Channel: Local/106@phones

Exten: 89000000000

CallerId: 89000000000

Priority: 1

Context: from-internal

Async: true

ActionID: astOriginal

Где я накосячил в диалплане? Если в Chanel: указать SIP/106, то отрабатывает, как выше уже описывал, только после подъема трубки на аппарате 106... Заранее спасибо!

dmitry0608@mail.ru ( 2014-11-24 15:04:30 +0400 )редактировать

С частью проблем разобрался, прописал в CLI> core set verbose 3 и Local ожил, но с диалпланом никак не разберусь - астер набирает переданный номер, звонок уходит на внешку, и доходит до адресата, но при этом внутренний телефон молчит как партизан! Соединение не устанавливается, при подъеме трубки со стороны внешнего абонента - в трубке тишина.

dmitry0608@mail.ru ( 2014-11-24 19:44:42 +0400 )редактировать

Налицо явное непонимание того что вы делаете.

Вам бы "библию" (Asterisk: будущее телефонии) прочесть, после чего многое станет понятным, в том числе и dialplan.

У вас в phones идет Dial Dongle, а не SIP/106. Задайте себе же вопрос "с чего же тогда должен аппарат 106 звонить если его никто не набирает ?" После того как поразмыслите над этим вопросом и ответ найдется.

"опыт, сын ошибок трудных" (с) Александр Пушкин

virus_net ( 2014-11-25 09:39:45 +0400 )редактировать

1 Ответ

0

Делайте originate не напрямую на абонента, а через chan_local в контекст, в котором уже включен answer-after=0. Можете привести пример кода - напишу что делать.

ссылка удалить спам редактировать

ответил 2014-11-22 21:43:31 +0400

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2014-11-22 19:39:28 +0400

Просмотрен: 853 раз

Обновлен: Nov 22 '14

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.