2017-08-25 3 views
0

J'essaie de faire en sorte que mon Asterisk exécute un script chaque fois qu'un certain téléphone (téléphone SIP) répond ou fait un appel sortant et lorsqu'il met fin à cet appel. Le but de cela est de couper automatiquement mon téléviseur quand un appel est fait avec le téléphone dans la même pièce.Script d'exécution Asterisk sur la réponse téléphonique et l'appel sortant

J'ai essayé d'utiliser la commande Système, mais cela n'obtient pas d'informations sur le téléphone qui a répondu. Comme j'ai plusieurs téléphones qui sonnent, je ne peux pas distinguer si c'était bien le téléphone à côté du téléviseur ou un téléphone complètement différent. Même problème que j'ai pour les appels sortants.

Existe-t-il une approche différente? J'ai aussi essayé d'utiliser l'AMI mais je n'ai pas trouvé le moyen d'obtenir le statut d'un homologue spécifique (Offline, Online, In Call, retardé).

Répondre

0

Disons que vous avez poste SIP/111

extension du support

[from-internal-very-special] 
exten => 111,1,UserEvent(TVRingStarted) 
same => n,Set(CHANNEL(hangup_handler_push)=from-internal-very-special,ends,1) 
same => n,Dial(SIP/111,,U(from-internal-very-special,answer,1)) 

exten =>answer,1,UserEvent(TVRingAnswer) 
same => n,Set(GOSUB_RESULT=);we accept call 
same => n,Return;continue 

exten => ends,1,Noop(end of call) 
same => n,UserEvent(TVRingEnds) 
same => n,Return; 

Après cette extension d'appel en local/111 @ de-interne-très spécial/n au lieu de SIP/111

Vous aurez des événements utilisateur que vous pouvez analyser via AMI. Ou vous pouvez le remplacer par des appels système comme vous le souhaitez.

+0

Je vais essayer dans une minute, merci! Et pour les appels sortants je dois le mettre dans un contexte spécial ou comment puis-je gérer cela? Comme mon contexte par défaut inclut de nombreuses extensions, ce serait le plus simple si je pouvais juste l'inclure et avoir un script exécuté avant et après cela, est-ce possible? – Flole

+0

Vous pouvez mettre l'option de numérotation gosub sur la réponse (U), dans laquelle vous pouvez vérifier le nom du canal. Mais j'ai peur que ce sera un personnel beaucoup plus complexe. – arheops

+0

Oui, ce sera certainement plus complexe que je devrais l'ajouter à absolument toutes les commandes de Dial, qui sont quelques centaines. Merci pour votre aide, j'ai apporté quelques modifications mineures à votre solution et cela fonctionne absolument bien maintenant! – Flole