착신 전화 번호를 전달할 전화 번호와 일치시키는 방식으로 착신 전화를 착신 전환하려면 어떻게해야합니까? 두 숫자는 모두 MySQL 데이터베이스에 저장됩니다.MySQL, 별표 (Asterisk) 다이얼 플랜 및 통화 착신 전환
3
A
답변
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 줄의 코드와 몇 가지 간단한 쿼리가 전달 규칙을 추가하고 제거합니다.
3
긴 코드 샘플은 죄송합니다.하지만 그 중 절반 이상이 설정하는 데 도움이되는 디버깅 코드입니다. 내가 서버를 있으리라 믿고있어
는 이미 PDO 라이브러리 (/usr/bin/php
에서) PHP의 현대 버전이, 당신은 열 caller_id
및 destination
와 fwd_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
. 이 기능을 다이얼 플랜에 통합하는 데 도움이 필요하면 질문을 편집하십시오.
관련 문제
- 1. 통화 착신 전환
- 2. 별표 (Asterisk) 착신 전화 DID 질문 (전화 번호)
- 3. 별표 (Asterisk) 프로그래밍 팁?
- 4. 별표 다이얼 플랜에서 웹 검색을 수행 하시겠습니까?
- 5. 안드로이드 착신 전환
- 6. 별표 (Asterisk) 또는 Trixbox와의 피어 투 피어
- 7. 프로그래밍 방식으로 iphone에서 착신 전환
- 8. Asterisk AGI : 전역 변수의 값을 얻거나 설정하는 방법?
- 9. 별표 (Asterisk) 관리자 API SIPPeers - 사용 권한이 거부되었습니다.
- 10. 별표 (Asterisk) 서버에서 전화로 오디오 파일 재생시 인공물
- 11. 제 3 자 : 별표 (Asterisk) 서버의 대역폭 변동
- 12. 별표 TDM410
- 13. Voip 녹음 솔루션 (별표 또는/및 FreeSwitch)
- 14. 루비와 별표 PBX
- 15. 다이얼 된 번호 정보 얻기
- 16. Asterisk Dialplan의 Exec()에서 여러 명령
- 17. 별표 SMS를 받기위한 SMS 센터
- 18. 별표 SIP에 걸려 오는 소리가 없습니다.
- 19. 동일한 SQL이지만 다른 Explain 플랜
- 20. 별표 - MySQL ht의 연결 확장 (연장)
- 21. mysql 데이터베이스 간 전환
- 22. 착신 전화 정보 + iphone
- 23. Maxretries에 도달하기 전에 별표 호출 파일을 삭제하십시오.
- 24. SIP, 별표, adhearson 및 VoIP
- 25. Asterisk와의 통화 연결을 감지하고 누구에게 전화를 걸 것인지
- 26. 별표 (*) : 명령을 찾을 수 없습니다
- 27. 유닛/통합 테스트 별표 구성
- 28. 태그 사이의 전환 및 전환
- 29. String.Format 및 log.DebugFormat 통화
- 30. DateTime 및 통화 세계화
매우 가깝습니다. 질문의 MySQL 부분을 다루지는 않지만, 필자는 그것이 길 아래까지 나를 충분히 끌어 들인다 고 생각한다. 그냥 일종의 예가 필요했습니다. 감사! – afarnham