Страница 1 из 1

AMI Originate и AutoAnswer

Добавлено: 23 июн 2014, 14:39
svd
Всем доброго дня.

Задача такая: реализовать Click2Call (Elastix 2.3.0)
нашел статью на хабре, сделал под свои задачи похожий php файл в который передаю два параметра: sender и reciever

Код: Выделить всё

<?php
$sender=$_GET["sender"];
$receiver=$_GET["receiver"];
echo "Call";

# Удаление ненужных символов из номера
$receiver = str_replace(array(" ","(", ")", "-", "."), "", $receiver);

# Доработка вызываемого номера 
switch (strlen($receiver)) {
    case 0:
        exit;
    break;

    case 7:
        $receiver="8391".$receiver;
    break;

    case 10:
        $receiver="8".$receiver;
    break;
}

$sys_ip = "127.0.0.1";

$User_str = "click2call";

$Secret_str = "click2callpassword";
$our_exten = "SIP/$sender";

$WaitTime = "10";
$domain = "127.0.0.1";

$strCustdata = "Call to ".($name!=""?$name:$receiver)." <$receiver>";

$oSocket = fsockopen ($sys_ip, 5038, $errnum, $errdesc) or die ("Connection to host failed");
sleep (1);

fputs ($oSocket, "Action: login\r\n");
fputs ($oSocket, "Username: $User_str\r\n");
fputs ($oSocket, "Secret: $Secret_str\r\n\r\n");

$wrets = fgets ($oSocket,128);

fputs ($oSocket, "Events: off\r\n\r\n");
fputs ($oSocket, "Action: originate\r\n");
fputs ($oSocket, "Channel: $our_exten\r\n");
fputs ($oSocket, "WaitTime: $WaitTime\r\n");
fputs ($oSocket, "CallerId: $sender\r\n");
fputs ($oSocket, "Exten: $receiver\r\n");
fputs ($oSocket, "Context: from-internal\r\n");
fputs ($oSocket, "Async: yes\r\n");
fputs ($oSocket, "Priority: 1\r\n\r\n");
fputs ($oSocket, "Action: Logoff\r\n\r\n");
sleep (2);

fclose ($oSocket);
?>
звонок при обращение get запросом инициируется, но на софтфоне приходится либо брать каждый раз трубку либо включать autoanswer.

но слышал, что можно в секции Variable: передать параметр который будет отправлен peer-у, типа автоответ=1. (или sip_auto_answer=true)

Поискал в интернете, нашел можно сказать ничего путёвого. перебор вариантов результата не дал.

Может знает кто:
1. Как может называться такой параметр в SIP?
2. Как передаются параметры из Variable: ... Originate peer-у в INVITE?
3. Возможно ли так сделать?
4. Получалось ли у кого?

Re: AMI Originate и AutoAnswer

Добавлено: 23 июн 2014, 14:49
zzuz
1. Делается это через

Код: Выделить всё

SIPAddHeader(Call-Info: <sip:ip>\;answer-after=0)
2. Из Variable ничего в INVITE не передается.
3. Возможно
4. Получалось.

пишите контекст

Код: Выделить всё

[call-autoanswer]
exten => _X.,1,SIPAddHeader(Call-Info: <sip:ip>\;answer-after=0)
exten => _X.,n,Dial(SIP/${EXTEN},,tT)
В Originate меняете

Код: Выделить всё

fputs ($oSocket, "Channel: $our_exten\r\n");
на

Код: Выделить всё

fputs ($oSocket, "Channel: Local/$sender@call-autoanswer/n\r\n");
Но если небольшое "Но". answer-after= должен поддерживать софтфон/аппарат.

Re: AMI Originate и AutoAnswer

Добавлено: 23 июн 2014, 19:10
svd
Само собой что аппарат должен поддерживать,
сделал так:
fputs ($oSocket, "Variable: _SIPADDHEADER55=Call-Info: <sip:192.168.0.5>; answer-after=0")

спасибо техподдержке t-sol.ru, подсказали.
zzuz - тоже спасибо.

проверил на трёх физических аппаратах
Fanvil C56 - работает
Cisco SPA502g - работает
Cisco 7942 - нет

больше под руку не попалось аппаратов, софтфоны ещё буду тестить, это всё для использования с ними.