добавить контактную информацию для исходящего звонка в звездочку 13 - PullRequest
0 голосов
/ 04 июля 2019

Я хочу добавить контактную информацию для исходящего вызова в звездочке 13, прежде чем я реализую эту абонентскую группу с звездочкой 11. Теперь я пробую это с звездочкой 13. Звездочка 13 при вызове всегда зависает

/ и т. Д./asterisk/extensions_custom.conf

[from-outgoinpin]
exten => _.,1,NoOp(CALLERID - ${EXTEN} | ${CALLERID(num)} | UNIQUEID - ${UNIQUEID} | ${CHANNEL} | ${CALLERID(RDNIS)} "--****************--")
exten => _.,2,AGI(outGoinPin.php,${EXTEN},${CALLERID(num)},${CHANNEL},${CALLERID(RDNIS)})
exten => _.,n,Hangup()

/ var / lib / asterisk / agi-bin / outGoinPin.php

#!/usr/bin/php -q
<?
require('phpagi.php');
include('dbconn.php');
$agi = new AGI();
$agi->answer();
$number = $argv[1];
$exten = $argv[2];
$channel = $argv[3];
$dialedexten = $argv[4];
    if(strlen($number) >= 7 ){
        # try 1
        $result = $agi->get_data('enter-conf-pin-number', 3000, 4);
        $keys = $result['result'];
        $getPinValidate = getPinValidate($keys,$exten,$number);
        if(strlen($getPinValidate) > 0){
            $agi->exec_goto('from-internal',$number,1);
        }else{
            $agi->stream_file('pin-invalid');
            # try 2
            $result = $agi->get_data('enter-conf-pin-number', 3000, 4);
            $keys = $result['result'];
            $getPinValidate = getPinValidate($keys,$exten,$number);
            if(strlen($getPinValidate) > 0){
                    $agi->exec_goto('from-internal',$number,1);
            }else{
                $agi->stream_file('pin-invalid');
                    # try 3
                    $result = $agi->get_data('enter-conf-pin-number', 3000, 4);
                    $keys = $result['result'];
                    $getPinValidate = getPinValidate($keys,$exten,$number);
                if(strlen($getPinValidate) > 0){
                               $agi->exec_goto('from-internal',$number,1);
                }else{
                    $agi->stream_file('pin-invalid');
                    $agi->hangup();
                }
            }
        }
    }else{
        $agi->exec_goto('from-internal',$number,1);
    }   
function getPinValidate($keys,$exten,$number){
    $sql = "select `ext` from `asterisk`.`exten` where `pin`='$keys';";
    $PinResult = sendquery($sql);    
    $user = "";

    if(mysql_num_rows($PinResult) > 0){
        while($row = mysql_fetch_assoc($PinResult)){
                    $user = $row['ext'];
            }
        $sql = "insert into `asterisk`.`exten_log`(`date`,`ext`,`dst`,`user`,`type`) value (NOW(),'$exten','$number','$user','1');";
        $Result = sendquery($sql);
    }
    else{
        $sql = "insert into `asterisk`.`exten_log`(`date`,`ext`,`dst`,`user`,`type`) value (NOW(),'$exten','$number','$user','0');";
        $Result = sendquery($sql);
    }

    return $user;
}   
?>

/var/lib/asterisk/agi-bin/dbconn.php

#!/usr/bin/php -q

<?php
# connect to the database server
$link = mysql_connect('localhost','root','') or die('Could not connect: ' . mysql_error());

# select database
if(!mysql_select_db('phonikip_db')){
    echo 'DB init failed';
}

function sendquery($sql){
    return mysql_query($sql,$GLOBALS['link']);
}
?>

это ошибка, когда я пытаюсь запустить этот

ошибка с отладкой

как я могу исправить эту ошибку или другой способ сделать это

1 Ответ

0 голосов
/ 05 июля 2019

Я не эксперт по PHP, поэтому я не буду исправлять ваш скрипт, но я думаю, что у меня есть обходной путь. Вы можете использовать приложение «Аутентификация» для достижения этой цели. Это в основном просит вызывающего абонента ввести ключ для продолжения плана набора. [Из-outgoinpin] * * 1 001

exten => _.,1,Authenticate(<YOUR PIN HERE>) same => n,whatever you want

Вот документы: https://wiki.asterisk.org/wiki/display/AST/Application_Authenticate

Надеюсь, это помогло:)

...