У нас есть база данных с телефонами, у нас есть VoIP телефоны (или софтфоны), у нас есть замечательный FreeSwitch и мы хотим инициировать звонок из базы, чтобы не набирать номер вручную.
Некоторые VoIP телефоны позволяют выполнять нажатие клавиш через HTTP запрос к внутреннему веб-серверу, а у кое-какого производителя на букву «D» для этого даже не нужна никакая авторизация. Однако синтаксис запроса у каждого производителя свой, что не очень удобно. Гораздо проще решить это через запрос к FreeSwitch.
Во-первых, надо включить модуль mod_xml_rpc, т.е. раскомментировать его загрузку в conf/autoload_configs/modules.conf.xml. После этого редактируем по своему вкусу несложные настройки (порт, пользователь, пароль) самого модуля в xml_rpc.conf.xml.
После перезапуска FreeSwitch веб-сервер заработает. Как таковой он сам по себе довольно удобен для выполнения команд, т.к. выводит результат в виде таблицы, что гораздо нагляднее той же консоли.
Синтаксис довольно простой:
Некоторые VoIP телефоны позволяют выполнять нажатие клавиш через HTTP запрос к внутреннему веб-серверу, а у кое-какого производителя на букву «D» для этого даже не нужна никакая авторизация. Однако синтаксис запроса у каждого производителя свой, что не очень удобно. Гораздо проще решить это через запрос к FreeSwitch.
Во-первых, надо включить модуль mod_xml_rpc, т.е. раскомментировать его загрузку в conf/autoload_configs/modules.conf.xml. После этого редактируем по своему вкусу несложные настройки (порт, пользователь, пароль) самого модуля в xml_rpc.conf.xml.
После перезапуска FreeSwitch веб-сервер заработает. Как таковой он сам по себе довольно удобен для выполнения команд, т.к. выводит результат в виде таблицы, что гораздо нагляднее той же консоли.
Синтаксис довольно простой:
http://192.168.0.1/webapi/
Если команда содержит больше чем одно слово, то первое и второе слово разделяются знаком вопроса, а остальные пробелами.
Например:
http://192.168.0.1/webapi/sofia?status%20profile%20internal
Теперь переходим непосредственно к делу. Идея в том, чтобы инициировать звонок (originate) на телефон сотрудника (007), а потом состоявшийся вызов переводить в план набора для исходящих вызовов («default»):
http://192.168.0.1/webapi/originate?{call_timeout=7,call_from_db=true,origination_caller_id_name='call%2078001234567',origination_caller_id_number=007}user/007%20&transfer(78001234567%20XML%20default)
После выполнения такого запроса зазвонит телефон с номером 007, а после взятия трубки звонок поступит в план вызовов ровно так же, как если бы номер 78001234567 непосредственно был набран с этого телефона.
В фигурных скобочках можно указать настройки для первоначального вызова, например свою переменную «call_from_db», благодаря которой в плане набора можно отличить такие звонки от обычных и как-то по особому их обработать.