アスタリスクに着信コールを転送する番号と一致させて着信コールを転送する方法を教えてください。どちらの数値もMySQLデータベースに格納されています。MySQL、アスタリスクダイヤルプランとコール転送
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ライブラリのコピーがあります。そして、ダイヤルプランからあなたはこのようにそれを呼び出すことができます
#!/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 ''");
}
?>
:
AGI(forward_by_callerid.agi)
そして、あなたのデータベースが一致している場合、それは変数を設定します次に含まれていforward_by_callerid.agi
のようなものをという名前のファイルを作成しますFWD_TO
があります。この機能をダイヤルプランに統合するための追加のヘルプが必要な場合は、質問を編集してください。
関連する問題
- 1. Twilioコール転送
- 2. ダイナミックAndroidコール転送
- 3. mysql転送クエリ
- 4. MySQLのデータ転送
- 5. アスタリスク13 - エージェントマクロへのコール転送エージェント
- 6. Twilio - 別のコール転送(非Twilio)IVR
- 7. Laravel 5.4コントローラでコールを転送
- 8. MySQLデータベースをリモートサーバに転送
- 9. フラットファイルデータベースをMySQLデータベースに転送
- 10. パケットフィルタリングと転送
- 11. LOCALHOST MYSQL DBからSERVERへの転送
- 12. SQL ServerからMySQLへのデータ転送
- 13. SQL ServerからMySQLへのデータ転送
- 14. knexを使用したMYSQLデータベース転送
- 15. サーバへのMySQLワークベンチの転送
- 16. サーバからクライアントへのMySQLデータベース転送
- 17. Bluetoothを使用してデバイス間でコール転送
- 18. mochaのアフターフックでコールされないsendmail転送のコールバック
- 19. アスタリスク転送されたコールを聞くイベント
- 20. アスタリスクダイヤルプランの複数行のコメント
- 21. Twilioエージェントがコールを別のエージェントに転送したときにコールを切断する方法
- 22. Linphone SIPコールをiOSネイティブコールに転送することはできますか?
- 23. アプリで転送を転送
- 24. ハプロキシ転送先転送
- 25. Mysql転置とグループ
- 26. rsyslogフィルタリングと転送
- 27. PHP:curlとストリーム転送
- 28. 2台のMySQLサーバ間でのMySQL転送
- 29. ローカルのmysqlからリモートのmysqlにテーブルを転送する
- 30. 転送先への転送先
非常に近いです。質問のMySQLの部分をカバーしていませんが、私はそれが道のりを十分に遠くにさせると思います。ちょっとした例が必要でした。ありがとう! – afarnham