Вызов PHP-скрипта с помощью FreePBX и Asterisk

Итак, у меня есть система VOIP, настроенная через сервер FreePBX. Я хочу, чтобы при приеме нового вызова FreePBX звездочки отправляли идентификатор вызывающего абонента и идентификатор вызова в php-скрипт, который затем будет использовать эту информацию для сбора информации о билетах для учетной записи, связанной с этим идентификатором вызывающего абонента. . Затем он обновит базу данных найденной информацией. Когда пользователь отвечает на звонок, я хочу отправить добавочный номер пользователя и идентификатор звонка в другой скрипт php и обновить базу данных новой информацией.

Я изучил PHPARI, но мне не хватает документации. Мне просто нужно, чтобы он пошел в одном направлении, а PHPARI и подобные библиотеки, похоже, сосредоточены на обоих направлениях, насколько я понял.

Мои поиски в Интернете ни к чему не привели, поэтому я обращаюсь к вам, ребята, за помощью и советом.

FreePBX Версия: 13.0.83 Версия Asterisk: 13.7.1


person CaptainQuint    schedule 17.03.2016    source источник


Ответы (1)


Взгляните на Asterisk AGI, вы сможете написать его через план набора (extension.conf) и включите любые переменные, такие как идентификатор вызывающего абонента.

Я сделал быстрый тест из моего extension.conf;

s используется для обнаружения случаев, когда в контекст.

exten => s,1,Verbose(Incoming call from Sip line CallerID=${CALLERID(all)})
exten => s,2,AGI(phone.php,${CALLERID(all)})
exten => s,3,Goto(internal-ext,3001,1)

мой phone.php находится по адресу /var/lib/asterisk/agi-bin/phone.php Передайте свои вары как script.php,<var>,<var>...

Не используйте script.php?callNum=, поскольку это допустимо только для веб-приложений, это следует рассматривать как командную строку.

Этот сценарий записывает в файл по адресу /tmp/phone, который обновляется идентификатором вызывающего абонента.

В моем php-скрипте я сделал следующее:

#!/usr/bin/php

<?php
    $query = $argv[1];
    $file = fopen("/tmp/phone", "w");
        fwrite($file,$query);
        fclose($file);
?>
person user3788685    schedule 17.03.2016
comment
Выглядит многообещающе, спасибо. Я обновлю этот вопрос, когда у меня будет прогресс или его отсутствие. - person CaptainQuint; 17.03.2016
comment
не стоит беспокоиться. Я попытаюсь найти ссылку, которая у меня где-то объясняла, как получить вары (например, идентификатор вызывающего абонента), если я это сделаю, я обновлю свой ответ. - person user3788685; 17.03.2016
comment
Спасибо. Все это для меня в новинку, и это последний кусок головоломки для моего проекта. Как только я получу эту интеграцию со звездочками, я смогу еще больше улучшить внешний вид своих приложений. - person CaptainQuint; 17.03.2016
comment
Итак, чтобы передать переменную Asterisk в скрипт php, мне нужно использовать для этого функцию Set? Я не могу просто поместить переменные в путь для PHP-скрипта, а затем использовать $ _GET для получения необходимой информации? - person CaptainQuint; 17.03.2016
comment
да, я думаю, вы можете просто получить правильный var. проверьте wiki.asterisk.org/wiki/display/AST/ У меня пока не было свободного времени для тестирования - person user3788685; 18.03.2016
comment
Так что у меня еще не было возможности проверить это, но мне было интересно, не могли бы вы помочь мне понять это больше. Я прочитал предоставленные ссылки, но все еще не понимаю одну или две вещи. Во-первых, первое значение - это расширение, так что же s делает в этом контексте. Во-вторых, когда я устанавливаю переменные, я делаю это с помощью Set() в виде отдельной строки в extension.conf или когда я вызываю путь к файлу и помещаю что-то вроде AGI(test.php?callNum=${CALLERID(num)})? - person CaptainQuint; 21.03.2016
comment
обновили свой ответ рабочим примером. проверить это. Единственный раз, когда вам нужно что-то установить, это если это еще не var в звездочке. - person user3788685; 22.03.2016