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

php - Исходящий вызов через макрос диалплана?

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

Задача: нужно звонить абоненту и делать оповещение. Звонок инициируется внешней программой, за счёт вызова скрипта PHP через веб-сервер.

Есть вот такой экстеншен:
Код:

exten => test,1,Answer()
exten => test,n,playback(3)
exten => test,n,Festival(Тестовая фраза!)
...тут меню голосовое вставим и обработаем ввод клиента.
exten => test,n,Hangup()


Вот кусок кода на php:
Код:
.....
$oSocket = fsockopen ("localhost", 5038, $errno, $errstr, 20);
if (!$oSocket) {
echo "$errstr ($errno)
\n";
} else {
fputs($oSocket, "Action: login\r\n");
fputs($oSocket, "Events: off\r\n");
fputs($oSocket, "Username: $strUser\r\n");
fputs($oSocket, "Secret: $strSecret\r\n\r\n");

fputs($oSocket, "Action: originate\r\n");
fputs($oSocket, "Channel: SIP/gsm1/$number\r\n");
fputs($oSocket, "WaitTime: $strWaitTime\r\n");
fputs($oSocket, "CallerId: $strCallerId\r\n");
fputs($oSocket, "Exten: test\r\n");
fputs($oSocket, "Context: $strContext\r\n");
fputs($oSocket, "Priority: $strPriority\r\n\r\n");
fputs($oSocket, "Action: Logoff\r\n\r\n");
sleep(2);
fclose($oSocket);
}
...


Тестово все хорошо вызывается из браузера и работает, оповещает клиента. Но есть проблемы которые надо решить до реальной эксплуатации: 1) один канал может быть использовать только для одного вызова одновременно. В коде сейчас сам канал зашит жестко. Т.е. больше одного одновременного звонка из кода сделать не можем. 2) Звонок может происходить на городской номер и на мобильный. По экономическим соображениям выгодней делать это по разным каналам.

В обычных исходящих вызовах обе проблемы решены макросом. В макрос передаётся номер, и он сам определяет какой канал свободный и как звонить дешевле. Здесь же имеем проблему: работа диалплана(из которого мы можем макрос вызвать) начнется, когда вызываемый абонент поднимет трубку. А для этого надо сразу указать канал через который звоним.

Вопрос: Как можно совершить такой вызов используя мой макрос уже написанный. Чтобы через него делалось соединение с нужным номером телефона и в дальнейшем управление передавалось в заданную часть диалплана?
#2

Можно делать звонок на Local канал и в диалплане разруливать дальше.
_________________
Intel Core 2 Duo E6400 @ 2.40GHz / 6Gb / 160Gb || Gentoo Linux || Asterisk 1.8.12
Решения телефонии на базе Asterisk || http://it-need.ru