Задать вопрос
@BuzzyMan

Что не так с Originate?

Возникла необходимость создания 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 и внести ясность тоже не могу. Подскажите, в чем может быть загвоздка?
  • Вопрос задан
  • 905 просмотров
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Скорее всего, в проблема заключается в неправильно указанном канале - локальный канал просто не способен выйти куда-то за пределы Астериска, поэтому внешние звонки не работают, а внутренние идут.
Обычно канал имеет вид "SIP/#FROM#".
Ответ написан
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Не понял почему ответ удалили....

Пускай админ снимает полные логи звонка(sip set debug on или TCP дамп).
Затем ищите на каком моменте обрывается и кем обрыв сделан.
Просто так никто никого не сбрасывает.

Если оператор(ваш или клиента) не пропускает звонок, значит ему что-то не нравится.
Возможно как раз таки callerdid уходит в оба канал одинаковый, и оператор(клиента) не пропускает такой звонок(сам себе получается клиент звонит).
Так же возможно оператор(который вам предоставляет связь) запрещает ставить любые callerid, т.к. это вообще-то из разряда полу-VIP функций.
Ответ написан
@silverjoe
Local/1234@from-office/n
Попробуйте добавить /n в конце, это не дает LocalChannel сразу же самоубиться, пока идет дозвон до второго абонента.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы