Comment ouvrir une session d'appel (SIP) demandes dans asterisk?
Est-il possible d'enregistrer les demandes SIP à une base de données dans asterisk? Je suis intéressé par ces détails:
- timestamp
- Méthode SIP
- code d'état
- le numéro de la source/extension
- numéro de destination/extension
Je suis assez sûr que c'est possible de traduire queue_log événements pour les requêtes SIP et obtenir les informations ci-dessus d'elle. Cependant, comme chaque appel passe par l'appel de files d'attente, cette solution ne fonctionne pas pour moi.
Peut-être qu'il est possible de réaliser en utilisant l'AMI? Ou de l'écriture personnalisée dialplan? Merci de partager vos pensées sur cette question.
OriginalL'auteur reederz | 2014-01-22
Vous devez vous connecter pour publier un commentaire.
Aucun moyen de le faire.
Astérisque n'enregistre pas les messages sip, sauf si vous avez sip debug activé.
Si vous avez besoin de contrôle sur le niveau de message, découvrez kamailio/opensips projet.
Vous pouvez contrôler les appels via dialplan ou par l'intermédiaire de l'ami des événements. Mais des appels n'est pas un message sip. Tous les appels ont beaucoup plus d'un message de configuration. Kamailio traiter les messages sip. Astérisque traiter les appels et les extensions de transition. Aucun moyen de contrôle d'un seul message dans asterisk. Si vous n'êtes pas convaincu, vous devez engager des experts.
OriginalL'auteur arheops
J'ai l'habitude de travailler pour un client qui demandait très exhaustif des statistiques en temps réel. Pour obtenir tout droit, nous avons dû combiner les Cdr, CELs, et queue_logs. Dans le fond, c'est un système très complexe, mais pour le moment nous n'avons pas de voir une autre façon d'aller. Eh bien, nous avons fait, mais il n'était pas possible.
L'une des questions les plus simples que vous pouvez poser est: Qui (A) a appelé l'oms (B) et qui ont répondu à l'appel (C) à la fin. Si vous pouvez répondre à cette question, vous pouvez en principe la réponse à la clientèle (Un), des appels dont l'extension (B) ce qui peut refléter l'intérêt du client. Pour savoir où la charge de travail s'est produite, vous devez avoir la dernière extension (C).
Aussi simple que cela puisse paraître, il est très difficile de le faire, en fonction du client d'installation. Si vous avez mélangé à des technologies comme la RNIS pour les appels sortants, et (SIP asterisk/freeswitch) pour les messages entrants (en entreprise) des appels, vous pouvez trouver qu'il n'y a même pas utilisable Enregistrement des Détails des Appels à tous.
Même pour les entrants de téléphonie SIP, je peux vous dire qu'il existe des scénarios où juste de trouver le bon A,B,C extensions est très difficile!!! Tout d'abord, vous devez savoir que Astérisque en interne connaît deux "jambes", où deux jambes représentent un pont entre les deux canaux (s'il vous plaît, corrigez-moi si je me trompe). Je ne suis pas un spécialiste, mais le considérer comme deux points de terminaison de parler les uns aux autres. Dans cette terminologie, il n'y a pas "d'abord appelé extension B". Aussi, le CEL et le CDR n'est pas relfect que. Il y a "heure d'été" et "src" les champs de la CDR mais vraiment dans le "canal" et "dstchannel" sont de plus de valeur pour vous. Le "dstchannel" parfois ressembler à "SIP/dialnumber@foobar", mais seulement si vos comptes SIP en quelque sorte se rapportent à un nombre donné (extension=dialnumber). Notez que souvent, les clients ne se soucient pas de la différence entre, d'une extension ou d'un dialnumber, mais en SIP, vous devez prendre soin.
Ce qui aide vraiment si vous utilisez personnalisé CDR variables. Configurer votre astérisque à utiliser le "custom_cdr" pilote pour le CDR, la journalisation et peut-être "custom_cel" pour CEL de journalisation. Ensuite, vous pouvez définir CDR variables dans votre dialplan et ils sont automatiquement écrites dans le CDR/CEL backend fonction de journalisation (par exemple, ODBC).
Comme un dernier point à réfléchir sur: Considérons un A, B, et C pour être des personnes. Laissez Un appel B. soit B mettre en attente et demander à personne C si elle peut prendre le relais en raison de son expérience. Transférer l'appel à partir d'Un<->B à A<->C (B raccroche). Combien de Cdr et combien de CELs pensez-vous que vous obtenez à partir de cela? Et comment sont les champs remplis? Dans les Cdr, cela ressemble parlé à B pour l'ensemble de la période. Seulement en regardant les CELs vous remarquerez qu'il y a un événement de TRANSFERT qui vous donne l'astuce. (Désolée pour cette si de ma mémoire, il pourrait être complètement différent maintenant).
Assez effrayant réponse, je vous invite à passer un très long moment sur l'ingénierie des exigences, plutôt que de commencer avec asterisk et kamailio. Demandez à ce que les cas d'utilisation le client veut couvrir avec votre solution. Croyez-moi, vous ne pouvez pas tout couvrir. Penser à avoir un flexible de format de données pour le stockage de vos statistiques. Pensez-document de bases de données comme MongoDB.
Si vous souhaitez commencer avec pure Astérisque, vous devez utiliser l'AMI. Peut-être certains processus personnalisé à l'écoute de ces événements, de les agréger et de les rendre disponibles par le biais d'un cache, de sorte que vous n'avez pas à la requête de l'AMI et de le mettre en charge sur l'Astérisque.
J'espère que cela aide, mais probablement que vous essayez d'atteindre quelque chose de complètement différent. 🙂
Avoir du plaisir.
De toute façon, l'application est déjà en cours d'exécution pendant un certain temps - la seule chose qui manque, c'est le poste de destination. C'est pourquoi je suis de direction vers la "modification de kamailio.cfg pour recueillir un peu plus de l'information et de l'édition dialplan pour fournir cette info de kamailio" solution. Je suppose que si je voudrais commencer le projet de nouveau, je pourrais faire les choses différemment E. g. la conception de l'événement avec AMI que la base plutôt que de kamailio acc
Le point de cette question était de trouver un simple hack pour résoudre mon problème. J'ai pensé que l'astérisque peut être en mesure de fournir le SIP événements dans le cas des appels entrants et le reste de la des cas, il serait couvert par le déjà existant kamailio acc solution.
J'ai écrit un démon dans le Nœud qui s'appuie Astérisque du modèle actuel des appels et des connexions (en mémoire, avec AMI, en temps réel) à utiliser dans un client appelle le service de surveillance (qui est consommé par les clients via les WebSockets). En fait, il y a toute une théorie de la complexité comme la QED, avec les diagrammes de Feynman 🙂 Il continuer à développer et à affiner, en dépit de l'utiliser en production. Pensez-vous utiliser l'Astérisque 11 ou 13?
Salut @avesus, à l'aide de node.js et l'AMI était aussi une approche que nous avions à l'époque. En temps réel des informations de présence de ce qui a été très efficace. J'ai déménagé et ne plus écrire du code pour asterisk. Je pense que nous avons utilisé un astérisque version, même avant le 11 😉
OriginalL'auteur Konrad Kleine
Pouvez vous s'il vous plaît les choses au clair. Voulez-vous que les logs? Si elle est ensuite suivez les étapes ci-dessous,
par exemple, debug => avis,avertissement,erreur,verbeux,dtmf
En dehors de cela, si j'ai besoin de stocker des données supplémentaires ou si je veux faire quelque chose avec l'appel puis-je écrire mon propre plan de numérotation avec une fonction personnalisée et j'ai utiliser de base de données mysql pour stocker mes données requises. Si vous souhaitez écrire votre propre application et asterisk asterisk-addon doivent être installés sur votre système et commencer à écrire votre propre application sous asterisk-addon/apps dir et de la place de la bibliothèque partagée dans lib ou lib64, en fonction de votre type de système. N'oubliez pas de redémarrer astérisque après la fabrication de tout type de modifications. Permettez-moi de savoir si je suis en mesure d'effacer vos doutes.
En fait j'écris mes propres astérisque application en fonction de l'exigence, de sorte que je générer mon propre cdr. Je ne sais pas votre appel astérisque plan de numérotation ou de scénario. Mais si vous voulez, puis peut vous dire le scénario d'exemple ce que je fais si j'ai besoin de faire un appel sortant et enregistrer les détails.
mais le CDR n'est pas le même que les événements d'appels (à moins que je ne comprends pas le concept). Je peux très bien envoyer des CDR pour le client après qu'il a généré le problème, c'est que le CDR sont générés après la session d'appel a pris fin. En d'autres termes, le client ne serait pas obtenir les détails de son appel en temps réel. C'est pourquoi je veux envoyer SIP les événements de style pour le client afin qu'ils puissent construire des applications temps-réel basées sur ces événements. Exemple de session: |t0| INVITER 180 (anneau) |t1| INVITER 180 (anneau) |t2| INVITER 200 (réponse) |t3| BYE 200 (hangup)
Ensuite, vous devez faire des changements dans asterisk mise en œuvre de fichier. Vous pouvez le vérifier astérisque-<version>/main/canal.c et asterisk-<version>/canaux/chan_sip.c fichier. Vous devez aller à travers ces fichiers une fois pour comprendre comment astérisque manipulation entrants messages sip.Si je ne me trompe pas, fondamentalement, vous voulez vous connecter, à chaque gorgée états intermédiaires par session.
Oui, je veux le journal "sip états intermédiaires par session". Je vais utiliser kamailio pour que.
OriginalL'auteur niloydebnath
Voyons connecter serveur asterisk en utilisant asterisk-r
puis tapez la commande sip set debug sur. Vous pouvez trouver l'exécution de journaux et toutes les demande de sip.
OriginalL'auteur Gowtham R