VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

AMI/PAMI вопросы

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
HighTower
Сообщения: 2
Зарегистрирован: 03 дек 2020, 16:48

AMI/PAMI вопросы

Сообщение HighTower »

Приветствую.

Есть asterisk 13.18.3 на убунту 18 из пакетов
Вообще всё прекрасно работает и проблем нет.

Решил навернуть красоты через AMI с использованием библиотеки php PAMI
Практически всё получилось, кроме пары моментов, надеюсь направите на пусть истинный...

Проблема 1:
- не получается создать звонок через Originate
Создаю OriginateAction, заполняю
для проверки делаю сериализацию, получаю корректную картину:

Код: Выделить всё

action: Originate
actionid: 72ef850e33a07087c5a4bb745156805c
channel: Local/201@test-ctx
context: callback
timeout: 30
exten: 202
priority: 1
callerid: 201
maxretries: 1
async: true
после отправки этого добра, в консоле вот такой вывод

Код: Выделить всё

-- Called 201@test-ctx
-- Executing [201@test-ctx:1] NoCDR("Local/201@test-ctx-000000bb;2", "") in new stack
-- Executing [201@test-ctx:2] Dial("Local/201@test-ctx-000000bb;2", "SIP/201@local,120,tTgfi") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/201@local
-- SIP/local-0000017f is ringing
-- Local/201@test-ctx-000000bb;1 is ringing
== Spawn extension (test-ctx, 201, 2) exited non-zero on 'Local/201@test-ctx-000000bb;2'
т.е. реально 201 НЕ звонит, сразу же получается spawn

если же содержимое выше положить в /var/spool/asterisk/outgoing то всё прекрасно работает...
что делаю не так?

Проблема 2:
- для перевода использую AttendedTransferAction
Работает, третья сторона вызывается, если положить трубку, то вторая и третья стороны соединяются.
Но, если третья сторона не хочет говорить с тем кого хочу перевести, или долго не отвечает, как прекратить попытку перевода и вернуть себе звонок?


Спасибо
ded
Сообщения: 15620
Зарегистрирован: 26 авг 2010, 19:00

Re: AMI/PAMI вопросы

Сообщение ded »

Очень как-то заморочно вызываете оба плеча, всё через канал Local, там и канал, и контекст local? .

Я так понимаю, надо просто позвонить от SIP/201 на SIP/202 ?
SIP/201@test-ctx запрошено и SIP/201@local исполняется влоге - это непонятно. У вас есть такой контекс local? В логе не видно контекста callback.

Код: Выделить всё

action: Originate
actionid: 72ef850e33a07087c5a4bb745156805c
channel: SIP/201
context: ? тут надо пока не callback, а контекст, в котором есть выполнение вызова типа exten => _2XX,1,Dial(SIP/${EXTEN})
timeout: 30
exten: 202
HighTower писал(а): если третья сторона не хочет говорить с тем кого хочу перевести, или долго не отвечает, как прекратить попытку перевода и вернуть себе звонок?
Если третья сторона не хочет говорить - пусть кладёт трубку. Должны при этом автоматом вернуться к первому абоненту.
Если долго не отвечает - должна быть конструкция Dial с таймаутом
exten => _2XX,1,Dial(SIP/${EXTEN},10,t)
и тогда возврат к разговору после таймаута в 10 сек.
HighTower
Сообщения: 2
Зарегистрирован: 03 дек 2020, 16:48

Re: AMI/PAMI вопросы

Сообщение HighTower »

Это вымороченность для callback
т.е. вызывается для начала 201
он отвечает, слышит приветствие и потом вызывается уже 202
всё это происходит в контексте test-ctx
делал по "учебникам", все рекомендуют использовать канал Local для коллбэка
и оно реально хорошо работает если файлом подкладывать

про возврат и малое время - понятно
но хочется "досрочно" в ручном режиме вернуть..
в features есть настройка
atxferabort = *1 ; cancel the attended transfer
т.е. если делать с сип телефона, можно набрать *1 и прекратить перевод
вопрос как такое сделать через AMI
так же интересно и
atxfercomplete = *2 ; complete the attended transfer, dropping out of the call
atxferthreeway = *3 ; complete the attended transfer, but stay in the call. This will turn the call into a multi-party bridge
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH