Project

General

Profile

Zapier

Added by Adrien Le RAY over 2 years ago

Bonjour Sylvain,

Je voulais tenter d'utiliser Zapier aujourd'hui, mais impossible de trouver Wazo dans les Trigger App. Faut-il appartenir à l'équipe Wazo pour accéder à la version béta du connecteur.

Adrien.


Replies (21)

RE: Zapier - Added by Sylvain Boily over 2 years ago

Salut,

Oui c'est pas encore publique. Mais quand je lance le beta test tu pourras en faire parti si tu veux. Je pense très bientôt.

RE: Zapier - Added by Adrien Le RAY over 2 years ago

Avec plaisir.

En attendant, je cherche à détecter si un appelant a raccroché avant qu'un membre de mon groupe ne décroche, afin d'envoyer un email de type appel manqué. Est-ce possible avec les sous-routines ? Je sais envoyer un email lorsque un appel arrive, ou lorsque l'appelé raccroche. Mais je sèche lorsque c'est l'appelant qui s'impatiente.

Adrien.

RE: Zapier - Added by julien dutilleul about 2 years ago

hello,

tu dois pouvoir utiliser le même système que quand un appel arrive ou lorsque l'appel est raccroché.
il faut surement regardé au niveau des statuts (busy, hangup) pour détecter un appelant qui raccroche.

cependant, je suis intéressé par ta solution d'alerte.
possible de la partager ici ?

et aussi, ça me permettrait de tester et corriger la fonctions que tu souhaites obtenir.

++

RE: Zapier - Added by Adrien Le RAY about 2 years ago

Pas de soucis pour partager.

Pour l'instant, je lance cette routine lorsqu'un appel n'aboutie pas (depuis l'onglet non réponse d'un utilisateur ou d'un groupe)

[send_email_before_voicemail]
exten = **99,1,NoOp(### MissCall ###)
same = n,NoOp(${XIVO_DSTNUM})
same = n,NoOp(### send num by email ###)
same = n,Set(MESSAGE(body)=Kenaos, ${XIVO_SRCNUM:2})
same = n,System(echo "Call from ${XIVO_SRCNUM:2} has been missed." | mutt -s "MissCall on Kenaos" info@kenaos.com)
same = n,voicemail(202)
same = n(return),Hangup()

Mais ceci ne marche pas si l'utilisateur raccroche avant. En cas de Hang Up, je pense que la routine suivante fonctionne, mais je ne vois pas d'où la lancer.

[send_email]
exten = h,1,NoOp(### Timeout ###) (### l'appelant raccroche ###)
same = n,NoOp(### send num by email ###)
same = n,Set(MESSAGE(body)=Kenaos,${XIVO_SRCNUM:2})
same = n(return),Return

L'autre option est d'intercepter les événements, ce qui peut être fait avec les API, mais je ne me suis pas encore lancé.

Capture.PNG View (27.8 KB)

RE: Zapier - Added by julien dutilleul about 2 years ago

Bonjour,

On s'écarte de Zapier ... mais bon.

Je pense que tu peux t'inspirer de ce topic:
https://projects.wazo.community/boards/8/topics/11239

avec ce type de dialplan, on récupère le statut de l'appel, et on fait une action en fonction de celui-ci.
tu devrais donc pouvoir faire un envoi de mail sur non réponse, raccroché, busy, injoignable ...etc.

dis moi si tu t'en sors.
et si tu partage le résultat, alors c'est génial

ps; je suis en train d'écrire un bout de doc contributeur wazo,
l'idée est d'avoir des exemples "ordonnés" sur :
http://documentation.wazo.community/en/stable/community/community.html

++

RE: Zapier - Added by Adrien Le RAY about 2 years ago

Je voulais développer ma fonction avec Zapier, mais il faut pouvoir accéder au connecteur.

En attendant, je fait avec les dialplans et ça marche tant que c'est celui qui reçoit l'appel qui raccroche ou n'est pas joignable. Mon problème est de lancer le même type de routine si c'est l'appelant qui raccroche. Là, je sèche sur l'onglet à utiliser (ce n'est pas "Non réponse").

Adrien.

RE: Zapier - Added by Sylvain Boily about 2 years ago

Salut,

Question bête mais pourquoi tu as besoin spécifiquement de Zapier pour faire ce que tu veux faire ?

RE: Zapier - Added by Adrien Le RAY about 2 years ago

Je me suis dit que c'était la meilleur approche. Je me sens plus à l'aise avec une machine à états.

Adrien.

RE: Zapier - Added by julien dutilleul about 2 years ago

ha ben oui, y'a pas d'onglet pour ça ^^

et comme dit sylvain, je vois pas en quoi zapier va t'aider.
Sylvain avait fait un bel exemple lors du dernier meetup à Lyon, et il en parle sur le blog:
http://blog.wazo.community/wazo-webhook.html

tu devrais tenter une approche dialplan ... surtout que zapier peut engendrer un coût.

en faites, quand l'appelant raccroche, on retrouve très bien l'info via un dialplan, et même, tu me l'as mis dans une sous-routine:

[send_email]
exten = h,1,NoOp(### Timeout ###) (### l'appelant raccroche ###)
same = n,NoOp(### send num by email ###)
same = n,Set(MESSAGE(body)=Kenaos,${XIVO_SRCNUM:2})
same = n(return),Return

Dans ton cas, ce qu'il faudrait "imaginer", c'est un pseudo SVI, où:
1/ on appelle un numéro
2/ si non réponse (ou busy) -> mail + voicemail
3/ si raccroche avant la fin de l'appel -> mail

Bon, le point 2, je le trouve discutable, car l'avertissement via mail d'un message sur le répondeur est configurable depuis l'onglet messagerie de l'utilisateur ...
mais imaginons que l'appelant ne laisse pas de message et que donc nous ne sommes pas averti par cette feature, je garde ton point de vue comme cohérent (et il doit l'être, perso, je ne sais pas si lorsqu'on raccroche avant de laisser un message, nous sommes averti ... a tester).

Alors pour simplifier, et garder ton travail, la feature "mail + voicemail" va être conservée comme tu le fais jusqu'à présent.

On va donc faire un dialplan, qui appelle ton utilisateur, et si il raccroche, on envoi un mail pour prévenir.

[mailed_user] 
exten = s,1,Dial(1234,20,r) (###extension 1234, durant 20 secondes, forcer la sonnerie###)
### je commente les lignes ci-dessous, car tu as mis tout ça dans l'onglet non-réponse, mais on peut le faire ici ###
;exten = s,2,Goto(s-${DIALSTATUS},1) (###récupérer le statut###)
;exten = s-CONGESTION,1,Congestion
;same = n,GoTo(send_email_before_voicemail,*99,1)
;exten = s-CANCEL,1,Hangup
;same = n,GoTo(send_email_before_voicemail,*99,1)
;exten = s-BUSY,1,Busy
;same = n,GoTo(send_email_before_voicemail,*99,1)
;exten = s-CHANUNAVAIL,1,SetCallerId(${CALLERIDNUM})
;same = n,GoTo(send_email_before_voicemail,*99,1)
;exten = s-NOANSWER,1,Noanswer
;same = n,GoTo(send_email_before_voicemail,*99,1)
###a chaque action, on a renvoyer vers "send_email_before_voicemail"###

###si l'appelant raccroche (avant que l'appelé ne décroche), on envoi un mail###
exten = h,1,NoOp(### Timeout ###) (### l'appelant raccroche ###)
same = n,NoOp(### send num by email ###)
same = n,Set(MESSAGE(body)=Kenaos,${XIVO_SRCNUM:2})
same = n(return),Return

### fin du dialplan

en version courte serait donc:

[mailed_user] 
exten = s,1,Dial(1234,20,r) (###extension 1234, durant 20 secondes, forcer la sonnerie###)
exten = h,1,NoOp(### Timeout ###) (### l'appelant raccroche ###)
same = n,NoOp(### send num by email ###)
same = n,Set(MESSAGE(body)=Kenaos,${XIVO_SRCNUM:2})
same = n(return),Return

d'ailleurs, je ne comprends pas pourquoi tu mets la destination (non-réponse, occupé,etc) sur "extension = *99",
alors que tu peux simplement choisir "personnalisée: GoTo(send_email_before_voicemail,s,1)"

et commencer ton code ainsi:

[send_email_before_voicemail]
exten = s,1,NoOp(### MissCall ###)

j'espère que tout ça t'aide.

++

RE: Zapier - Added by Adrien Le RAY about 2 years ago

Merci pour ton aide.

Premier point, j'ai mal recopié mon script.
La ligne same = n,Set(MESSAGE(body)=Kenaos,${XIVO_SRCNUM:2}) permet d'envoyer un message texte et non un email. Il faut lui ajouter same = n,MessageSend(sip:AliasUtilisateur,Titre) et avoir configuré l'envoie des messages textes pour que ça marche

Pour l'envoie d'emails, la commande est same = n,System(echo "Call from ${XIVO_SRCNUM:2} has been missed." | mutt -s "Titre_du_mail" email@domain.ext)

Pour en revenir au pseudo IVR, je n'arrive pas à le faire fonctionner. Au niveau de l'appel entrant, je choisi Destination = Personnalisée, et Commande = Goto(mailed_user,s,1) ? Si j'appelle le numéro entrant, Wazo me répond que l'utilisateur n'est pas dispo et me renvoie sur messagerie.

Adrien.

RE: Zapier - Added by julien dutilleul about 2 years ago

merci pour l'info sur les textes et les mails.

désolé, je crois que la commande dial demande la techno en premier argument
exten = s,1,Dial(SIP/1234) (###extension 1234###)

ça devrait mieux marcher ^^

RE: Zapier - Added by Adrien Le RAY about 2 years ago

Pas de soucis, j'aurais aussi pu regarder la doc de Dial.

En fait, c'st les commentaires (### ###) qui me plantait la commande. Sans ça fonctionne beaucoup mieux :)

Pour en revenir à la détection d'appel manqué, voici le script qui fonctionne. Il faut détecter le statut une fois que la communication est coupée.

@[callerid_and_miss_call]
exten = s,1,Dial(SIP/1234,60,r)
exten = h,1,Goto(s-${DIALSTATUS},1)
exten = s-ANSWER,1,Return
same = n,Return()
exten = s-CONGESTION,1,Congestion
same = n,GoTo(send_email,s,1)
exten = s-CANCEL,1,GoTo(send_email,s,1)
exten = s-BUSY,1,GoTo(send_email,s,1)
exten = s-CHANUNAVAIL,1,GoTo(send_email,s,1)
exten = s-NOANSWER,1,GoTo(send_email,s,1)

[send_email]
exten = s,1,NoOp(### Miss Call ###)
same = n,System(echo "Call from ${XIVO_SRCNUM:2} has been missed." | mutt -s "MissCall" )
same = n(return),Return@

Bon, maintenant je dois faire ça avec un groupe. J'espère que je peux renvoyer le Dial sur le groupe (un truc du gendre exten = s,1,Dial(Local/1234,60,r)) au lieu de refaire la roue dans le dialplan.

Adrien.

RE: Zapier - Added by Adrien Le RAY about 2 years ago

Bon,

La commande exten = s,1,Dial(Local/1234,60,r) appelle bien le groupe, mais le fonctionnement de groupe fait que le DIALSTATUS est ANSWER. Du coup, il faut une autre stratégie. As-tu une idée ? Je n'ai pas envie de gérer le groupe depuis le diaplan, je préfère le gérer via Wazo.

Adrien.

RE: Zapier - Added by julien dutilleul about 2 years ago

yop,

a tester:

[callerid_and_miss_call]
exten = s,1,Goto(default,1234,1)
exten = h,1,NoOp(### Miss Call ###)
same = n,System(echo "Call from ${XIVO_SRCNUM:2} has been missed." | mutt -s "MissCall" email@domain.ext)
same = n(return),Return

dans un dialplan que j'utilise, le "h" défini bien les appels raccrochés en file d'attente (donc celui de l'appelant, et non celui de l'appelé).
je m'en sers pour les statistiques des appels sur la file d'attente.

donc là, je "vais" sur l'extension 1234, du context default
si ça raccorche avant que le dial se fasse, h est "true" et j'envoi le mail.

ça devrait marcher sur le groupe, comme sur la file d'attente, comme sur un utilisateur ...

tu peux confirmer ?

cheers

RE: Zapier - Added by Adrien Le RAY about 2 years ago

Bonjour Julien,

Je me suis mal exprimé. Ce dont j'ai besoin, c'est lorsqu’un appel vers un groupe se termine, est-ce que quelqu'un du groupe a répondu.

Adrien.

RE: Zapier - Added by julien dutilleul about 2 years ago

Pourquoi ne pas utiliser les CDR dans la nouvelle interface d'admin ?

tu peux utiliser le champ "rechercher" pour filtrer.

cf pièce jointe

là tu as bien le status "answered".

en revanche, pas d'action "automatique" avec la consultation des journaux d'appels.

sinon, le "h" que je te disais, c'est lorsque l'appelant raccroche ... c'est comme ça que je vois mes appels raccrochés en file d'attente.

RE: Zapier - Added by Adrien Le RAY about 2 years ago

D'où l'intérêt de Zapier pour consulter automatiquement les CDR.

Concernant le "h" dont tu parles, depuis quel endroit lances-tu la routine ? Je me demande si avec les API, je ne peux pas ajouter une post-routine de traitement à la fin d'un appel.

RE: Zapier - Added by julien dutilleul about 2 years ago

yop,

en faite, le "h" sera plus si c'est raccroché dans le menu, et non après avoir fait sonner le téléphone.

mais tu peux le faire avec des requêtes pgsql.

tu peux aussi utiliser les API, et ça c'est plus "intelligent" si je peux dire.

https://api.wazo.community/#/
wazo-call_logd, tu as les champs duration et answered qui peuvent te donner une info, et faire le tri avec le number et les tags

tu peux regarder déjà si ça convient sur: http://ton-serveur.fr/api

ensuite, tu peux imaginer un fichier "call back", qui s'écrit lorsque l'appel est terminé avec answered = false pour les appels sur le numéro du groupe.

dans ce cas, oui, zapier peut t'aider à créer ce fichier.
un petit plugin avec un peu de python peut également le faire.

et cette notion de call back intéresse du monde

++

RE: Zapier - Added by Sylvain Boily about 2 years ago

Allo,

En version 17.12 on a un webhookd presque complètement fonctionnel (manque la partie pour les utilisateurs en fait), faut que je pousse l'interface d'admin dans le market pour créer des webhooks. Du coup tu peux t'abonner à l'event des CDR et pousser ça sur un serveur HTTP par exemple. Sinon tu peux aussi un plugin pour en faire ce que tu veux :) Y a vraiment de quoi super cool qui arrive sur ce sujet dans les prochaines semaines.

RE: Zapier - Added by Adrien Le RAY about 2 years ago

J'ai fait un script en python que j'ai mis dans un nouveau post. Je verrai comment le déclencher avec un event CDR.

    (1-21/21)