Возникла необходимость создания callback-формы на сайтах компании.
Для реализации решили использовать команду Originate для нашего Asterisk
Попросил админа создать пользователя AMI и скинуть данные для команды Originate.
Для примера, клиент с номером
89111234567 отправил форму и ждет звонка от менеджера с добавочным
1234
Набросал код на php c использованием библиотеки
marcelog/pami получилось следующее
require_once "./vendor/autoload.php";
$options = [
'host' => 'asterisk_host',
'scheme' => 'tcp://',
'port' => 5038,
'username' => 'username',
'secret' => 'secret',
'connect_timeout' => 15000,
'read_timeout' => 15000
];
$ami = new \PAMI\Client\Impl\ClientImpl($options);
$originate = new \PAMI\Message\Action\OriginateAction('Local/1234@from-office');
$originate->setCallerId('89111234567');
$originate->setContext('from-office');
$originate->setExtension('89111234567');
$originate->setTimeout(15000);
$originate->setPriority(1);
$originate->setAsync(false);
$message = $ami->send($originate);
if($message->isSuccess()){
//
}else{
//
}
Смысл в том что так не работает. После отправки команды, идет звонок менеджеру, на телефоне высвечивается (89111234567 абонент не сопоставлен), как только менеджер снимает трубку все заканчивается.
Если качестве CallerId указать не 89111234567, а любой внутренний номер, например, 2222 или его же 1234, то все прекрасно работает, но при этом менеджер думает что ему звонит Вася Пупкин.
Админ всю голову сломал, но решения пока не предложил. Я человеке далекий от asterisk и внести ясность тоже не могу. Подскажите, в чем может быть загвоздка?