Пытаюсь написать простенький php скрипт для обращения к API "Яндекс. Поиск по организациям"
Цель: При входящем звонке через API получать название организации по CALLERID звонящего.
Для связи с Asterisk использую phpagi.php
Проблема следующая:
Скрипт обращается к API через curl, далее получает в качестве ответа JSON, из которого вытаскивает значение поля "name"
При запуске скрипта из shell и отправки ему номера в качестве аргумента все работает корректно.
При попытке запускать скрипт из Asterisk через agi не отрабатывает curl, соответственно поле "name" остается пустым.
Пробовал в скрипте выводить результаты curl в файл - файл не создается.
Вот сам скрипт:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
#!/usr/bin/php -q
<?php
require('phpagi.php');.
$agi = new AGI(); //подключаем файл phpagi.php
$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');
$stdlog = fopen('my_agi.log', 'w');
$cid = $agi->request['agi_callerid']; // берем из AGI номер звонящего
$apiresponse=`/usr/bin/curl "https://search-maps.yandex.ru/v1/?apikey=<мой апи ключ>&text=$cid&lang=ru_RU&type=biz&results=1"`;
$jarr=json_decode($apiresponse, TRUE);
if ($jarr['properties']['ResponseMetaData']['SearchResponse']['found'] != 0) {
$name = $jarr['features'][0]['properties']['name'];
};
shell_exec(echo $jdecode >> /tmp/testagi);
$agi->set_variable("name", $name);
$agi->set_variable("agicid", $cid);
$agi->set_variable("agicid1", $argv[1]);
fclose ($stdin);
fclose ($stdlog);
exit(0);
?>
<?php
require('phpagi.php');.
$agi = new AGI(); //подключаем файл phpagi.php
$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');
$stdlog = fopen('my_agi.log', 'w');
$cid = $agi->request['agi_callerid']; // берем из AGI номер звонящего
$apiresponse=`/usr/bin/curl "https://search-maps.yandex.ru/v1/?apikey=<мой апи ключ>&text=$cid&lang=ru_RU&type=biz&results=1"`;
$jarr=json_decode($apiresponse, TRUE);
if ($jarr['properties']['ResponseMetaData']['SearchResponse']['found'] != 0) {
$name = $jarr['features'][0]['properties']['name'];
};
shell_exec(echo $jdecode >> /tmp/testagi);
$agi->set_variable("name", $name);
$agi->set_variable("agicid", $cid);
$agi->set_variable("agicid1", $argv[1]);
fclose ($stdin);
fclose ($stdlog);
exit(0);
?>
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
same => n,AGI(testagi1.php,7${CALLERID(num)})
same => n,Noop(/-------------------\)
same => n,Noop(|Name is: ${outname}|)
same => n,Noop(|AGI Name is: ${name}|)
same => n,Noop(|AGI CID is: ${agicid}|)
same => n,Noop(|AGI arg is: ${agicid1}|)
same => n,Noop(\-------------------/)
same => n,Noop(/-------------------\)
same => n,Noop(|Name is: ${outname}|)
same => n,Noop(|AGI Name is: ${name}|)
same => n,Noop(|AGI CID is: ${agicid}|)
same => n,Noop(|AGI arg is: ${agicid1}|)
same => n,Noop(\-------------------/)
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
-- Executing [s@macro-incoming:6] AGI("DAHDI/i1/4957877272-31a2", "testagi1.php,74957877272") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/testagi1.php
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_request: testagi1.php
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_channel: DAHDI/i1/4957877272-31a2
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_language: ru
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_type: DAHDI
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_uniqueid: 1655455822.160021
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_version: 16.20.0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callerid: 4957877272
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_calleridname: unknown
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callingpres: 1
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callingani2: 0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callington: 33
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callingtns: 0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_dnid: 686
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_rdnis: unknown
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_context: macro-incoming
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_extension: s
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_priority: 6
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_enhanced: 0.0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_accountcode:
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_threadid: 139768320100096
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_arg_1: 74957877272
<DAHDI/i1/4957877272-31a2>AGI Tx >>
<DAHDI/i1/4957877272-31a2>AGI Script testagi1.php completed, returning 0
...
-- Executing [s@macro-incoming:12] NoOp("DAHDI/i1/4957877272-31a2", "/-------------------\") in new stack
-- Executing [s@macro-incoming:14] NoOp("DAHDI/i1/4957877272-31a2", "|AGI Name is: |") in new stack
-- Executing [s@macro-incoming:15] NoOp("DAHDI/i1/4957877272-31a2", "|AGI CID is: |") in new stack
-- Executing [s@macro-incoming:16] NoOp("DAHDI/i1/4957877272-31a2", "|AGI arg is: |") in new stack
-- Executing [s@macro-incoming:19] NoOp("DAHDI/i1/4957877272-31a2", "\-------------------/") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/testagi1.php
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_request: testagi1.php
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_channel: DAHDI/i1/4957877272-31a2
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_language: ru
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_type: DAHDI
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_uniqueid: 1655455822.160021
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_version: 16.20.0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callerid: 4957877272
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_calleridname: unknown
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callingpres: 1
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callingani2: 0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callington: 33
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_callingtns: 0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_dnid: 686
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_rdnis: unknown
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_context: macro-incoming
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_extension: s
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_priority: 6
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_enhanced: 0.0
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_accountcode:
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_threadid: 139768320100096
<DAHDI/i1/4957877272-31a2>AGI Tx >> agi_arg_1: 74957877272
<DAHDI/i1/4957877272-31a2>AGI Tx >>
<DAHDI/i1/4957877272-31a2>AGI Script testagi1.php completed, returning 0
...
-- Executing [s@macro-incoming:12] NoOp("DAHDI/i1/4957877272-31a2", "/-------------------\") in new stack
-- Executing [s@macro-incoming:14] NoOp("DAHDI/i1/4957877272-31a2", "|AGI Name is: |") in new stack
-- Executing [s@macro-incoming:15] NoOp("DAHDI/i1/4957877272-31a2", "|AGI CID is: |") in new stack
-- Executing [s@macro-incoming:16] NoOp("DAHDI/i1/4957877272-31a2", "|AGI arg is: |") in new stack
-- Executing [s@macro-incoming:19] NoOp("DAHDI/i1/4957877272-31a2", "\-------------------/") in new stack
Права на testagi1.php выставил
Наличие phpagi.php проверил
Скрипт запускается на FreePBX 15
На самом деле получать name можно было бы и сразу из диалплана через команду SHELL, но хочется освоить работу через AGI интерфейс
Буду очень признателен, если вы поможете или подскажете, что проверить\изменить для корректной работы