Comment puis-je demander à Asterisk de transférer les appels entrants en faisant correspondre le numéro d'appel entrant avec un numéro à transférer? Les deux nombres sont stockés dans une base de données MySQL.MySQL, les plans de numérotation Asterisk et le renvoi d'appel
Répondre
La solution que je cherchais a fini par ressembler à ceci:
[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()
This article devrait faire l'affaire. Il s'agit de 3 lignes de code et de quelques requêtes simples pour ajouter et supprimer des règles de transfert.
Désolé pour l'exemple de code long, mais plus de la moitié d'entre elle est le code de débogage pour vous aider à le configurer.
Je suppose que votre serveur dispose déjà d'une version moderne de PHP (à /usr/bin/php
) avec la bibliothèque PDO, et que vous avez une table de base de données nommée fwd_table
avec des colonnes caller_id
et destination
.
Dans/var/lib/asterisk/agi-bin, obtenez une copie de la bibliothèque PHP AGI. Ensuite, créez un fichier nommé quelque chose comme forward_by_callerid.agi
qui contient:
#!/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 ''");
}
?>
Ensuite, à partir du plan de numérotation, vous pouvez l'appeler comme ceci:
AGI(forward_by_callerid.agi)
Et si votre base de données a un match, il sera la variable FWD_TO
avec Dieu. Veuillez modifier votre question si vous avez besoin d'aide pour l'intégrer dans votre plan de numérotation.
- 1. Asterisk & IVR & provider
- 2. Plans de sauvegarde et de gestion des sinistres pour la base de données mysql
- 3. plans d'exécution pour les bases de données
- 4. jsp problème de numérotation
- 5. Numérotation LaTeX?
- 6. Problème prioritaire dans les plans Sitemap
- 7. Supprimer les arrière-plans blancs des images
- 8. Technique Pure-SQL pour les lignes de numérotation automatique dans le jeu de résultats
- 9. Renvoi basé sur les en-têtes d'hôte
- 10. Numérotation des modifications
- 11. Arrière-plans Sprite
- 12. Renvoi de la socket EAGAIN
- 13. Comment puis-je trouver le point d'intersection de trois plans?
- 14. Divs avec les arrière-plans d'image contre les balises img
- 15. Comment programmer les paramètres de renvoi d'appel sur Windows Mobile?
- 16. Numérotation du théorème dans LaTeX
- 17. Sphinx automatisé numérotation d'images/légendes?
- 18. MySQL Fonction de renvoi du nom de la table à utiliser dans une requête
- 19. Connexion de deux plans en 3D
- 20. Lire des douilles de renvoi dans java?
- 21. iPhone comment supprimer l'écran de numérotation téléphonique
- 22. Numérotation des sous-requêtes Regex
- 23. Postfix Mail Server - Comptes locaux et comptes externes - Renvoi
- 24. Renvoi de requêtes à SQL Server
- 25. Renvoi de% 40 à un symbole @
- 26. Crystal Reports - Numérotation horizontale des pages
- 27. php et la recherche de MySQL et les variables problème
- 28. Obtention des canaux actifs d'un utilisateur dans asterisk-java
- 29. Des plans pour "faire"/Action LINQ opérateur?
- 30. mysql structure pour les commentaires et les réponses de commentaires
Très proche. Ne couvre pas la partie MySQL de la question, mais je pense que cela me mène assez loin sur la route. Juste besoin d'une sorte d'exemple. Merci! – afarnham