2008-09-16 3 views

답변

1

이 같은 찾고 결국 찾고 있던 솔루션 :

[default] 
exten => _X.,1,Set(ARRAY(${EXTEN}_phone)=${DTC_ICF(phone_number,${EXTEN})}) 
exten => _X.,n(callphone),Dial(SIP/metaswitch/${${EXTEN}_phone},26) 
exten => _X.,n(end),Hangup() 
1

This article 트릭을해야합니다. 약 3 줄의 코드와 몇 가지 간단한 쿼리가 전달 규칙을 추가하고 제거합니다.

+0

매우 가깝습니다. 질문의 MySQL 부분을 다루지는 않지만, 필자는 그것이 길 아래까지 나를 충분히 끌어 들인다 고 생각한다. 그냥 일종의 예가 필요했습니다. 감사! – afarnham

3

긴 코드 샘플은 죄송합니다.하지만 그 중 절반 이상이 설정하는 데 도움이되는 디버깅 코드입니다. 내가 서버를 있으리라 믿고있어

는 이미 PDO 라이브러리 (/usr/bin/php에서) PHP의 현대 버전이, 당신은 열 caller_iddestinationfwd_table라는 이름의 데이터베이스 테이블이 있는지 확인하십시오.

/var/lib/asterisk/agi-bin에 PHP AGI 라이브러리 사본을 확보하십시오. 그런 다음이 포함 forward_by_callerid.agi 같은 것을라는 이름의 파일 생성 :

AGI(forward_by_callerid.agi) 

을 그리고 데이터베이스가 일치하는 경우,이 변수를 설정합니다 :

#!/usr/bin/php 
<?php 
ini_set('display_errors','false'); //Supress errors getting sent to the Asterisk process 

require('phpagi.php'); 
$agi = new AGI(); 

try { 
    $pdo = new PDO('mysql:host='.$db_hostname.';dbname='.$db_database.';charset=UTF-8', $db_user, $db_pass); 
} catch (PDOException $e) { 
    $agi->conlog("FAIL: Error connecting to the database! " . $e->getMessage()); 
    die(); 
} 

$find_fwd_by_callerid = $pdo->prepare('SELECT destination FROM fwd_table WHERE caller_id=? '); 

$caller_id = $agi->request['agi_callerid']; 

if($callerid=="unknown" or $callerid=="private" or $callerid==""){ 
    $agi->conlog("Call came in without caller id, I give up"); 
    exit; 
}else{ 
    $agi->conlog("Call came in with caller id number $caller_id."); 
} 

if($find_fwd_by_callerid->execute(array($caller_id)) === false){ 
    $agi->conlog("Database problem searching for forward destination (find_fwd_by_callerid), croaking"); 
    exit; 
} 
$found_fwds = $find_fwd_by_callerid->fetchAll(); 
if(count($found_fwds) > 0){ 
    $destination = $found_contacts[0]['destination']; 
    $agi->set_variable('FWD_TO', $destination); 

    $agi->conlog("Caller ID matched, setting FWD_TO variable to ''"); 
} 

?> 

을 다음 다이얼 플랜에서 당신은 다음과 같이 호출 할 수 있습니다 덕분에 FWD_TO. 이 기능을 다이얼 플랜에 통합하는 데 도움이 필요하면 질문을 편집하십시오.

관련 문제