Страница 1 из 1

Дождаться ответа абонента (Manager API)

Добавлено: 07 авг 2015, 08:34
key_sidorov
Добрый день!
Есть задача диктовать код подтверждения мобильного телефона. Через входящий звонок на IVR этот функционал настроил, хотелось бы автоматически дозваниваться до абонента самостоятельно и диктовать код.

Итак, в manager.conf создал запись, прописал контекст и канал:

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

[fromdoska]
exten => _7XXXXXXXXXX,1,Set(CALLERID(num)=5149781) 
exten => _7XXXXXXXXXX,2,Dial(SIP/yurgatelecom/8${EXTEN:1},30,)

[doska]
exten => s,1,AGI(doska_code_req.php)
exten => s,n,GoToIf($[${LEN(${DOSKACODE})} != 4]?no_code:say_code)
exten => s,n(no_code),Playback(custom/code-not)
exten => s,n(say_code),Playback(custom/code-save)
exten => s,n,SayDigits(${DOSKACODE})
exten => s,n,Playback(custom/code-anno)
Отправляю запрос из PHP на 5038 порт, астериск дозванивается до меня, но я слышу сообщение не сначала. В консоле видно что выполняется AGI проигрываются файлы еще до того как я снял трубку.

Скажите, возможно ли такое сделать через AMI или это нужно с помощью call файлов организовывать.

Re: Дождаться ответа абонента (Manager API)

Добавлено: 07 авг 2015, 08:55
april22
а у вас не аналоговая линия на дозвон ?!

Re: Дождаться ответа абонента (Manager API)

Добавлено: 07 авг 2015, 10:06
ded
слышу сообщение не сначала. В консоле видно что выполняется AGI проигрываются файлы еще до того как я снял трубку.
Укажите
exten => s,n,Wait(2)

Re: Дождаться ответа абонента (Manager API)

Добавлено: 07 авг 2015, 10:15
key_sidorov
april22 писал(а):а у вас не аналоговая линия на дозвон ?!
sip от городского провайдера
ded писал(а):exten => s,n,Wait(2)
это частный случай, если дозвон составит более 2х секунд?

Re: Дождаться ответа абонента (Manager API)

Добавлено: 07 авг 2015, 10:38
ded
Это лучше с помощью call файлов организовывать.
Два плеча, указанные в call файле, сработают именно так, как вам нужно: первое плечо отработает до Answer, после чего отработает скрипт.

Re: Дождаться ответа абонента (Manager API)

Добавлено: 07 авг 2015, 11:53
key_sidorov
На всякий случай тоже решение с помощью call файлов

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

Channel: Local/7923ХХХ6801@fromdoska
Callerid: 7923ХХХ6801
MaxRetries: 2
RetryTime: 20
WaitTime: 60
Context: doska
Extension: s
Priority: 1
doska и fromdoska описаны в первом сообщении

Всем спасибо!