Header Alert-Info sur groupe d'appels (callgroup)

Bonjour,

Je cherche à permettre à mes téléphones de jouer une sonnerie différente en fonction de la provenance d’un appel (externe / interne).

Pour cela je m’appuyais sur le dialplan xivo-ring_type_set sur xivo mais il ne semble plus fonctionneras fonctionner sur wazo platform.

Par conséquent, j’utilise une sous-routine globale de type user dans laquelle j’identifie la source de l’appel via la variable XIVO_CALLORIGIN et ajouter un header SIP(via predial hook) Alert-Info dans mon INVITE

(https://wazo-platform.org/uc-doc/api_sdk/subroutine)

J’arrive à le faire fonctionner lorsque mon DID est routé sur un user directement
J’arrive à le faire fonctionner si un user appelle en interne un autre user

Là où je coince : Si mon DID est routé sur un groupe comportant des users, je passe bien dans ma sous routine pourtant je n’ai pas le header dans mon INVITE.

Est-ce que quelqu’un aurait déjà rencontre ce problème ? A quel niveau faudrait-il agir pour customiser les INVITE SIP envoyés aux users membres du call group appelé ?

Merci par avance pour votre aide :slight_smile:

Salut,

As-tu essayé avec le wazo-add-pre-dial-hook documenté dans la page que tu ref ? A mon avis t’es obligé de faire cela. Aussi ça dépend comment ton groupe est configuré, si y a un appel directement via SIP sans passer par le dialplan ça ne fonctionnera pas.

Bonjour,

Merci de t’intéresser à mon soucis :slight_smile:

Oui j’utilise le predial hook mais ce n’est pas fonctionnel uniquement pour les groupes.

J’ai tenté au cas ou de faire la même logique mais dans un subroutine global de type groupe mais pas mieux.

Par contre je n’ai pas compris ta dernière phrase :

Aussi ça dépend comment ton groupe est configuré, s'il y a un appel directement via SIP sans passer par le dialplan ça ne fonctionnera pas.

Dans mon cas mon DID a pour destination un groupe, qui comporte des utilisateurs ayant un téléphone SIP tiers (genre yealink, snom, mitel etc…)

Dans un groupe on peut appeler directement sans passer par le diaplan un téléphone. Quand tu appelles ton groupe tu vois du dialplan s’exécuter pour appeler un utilisateur ?

En passant c’est quoi ta version ?

Hello,

Quand j’appelle mon groupe je vois bien ma routine s’éxecuter de la même manière que si j’appelle un user en direct.

Voici un petit extrait :

Executing [s@callorigin:2] NoOp("PJSIP/qrz60xl9-0000019e", "MODULE DE CALL ORIGIN") in new stack
Executing [s@callorigin:3] NoOp("PJSIP/qrz60xl9-0000019e", "Source extern") in new stack
Executing [s@callorigin:4] GotoIf("PJSIP/qrz60xl9-0000019e", "1?:return") in new stack
Executing [s@callorigin:5] ExecIf("PJSIP/qrz60xl9-0000019e", "1?GoSub(wazo-add-pre-dial-hook,s,1(callorigin-extern)):GoSub(wazo-add-pre-dial-hook,s,1(callorigin-intern))") in new stack
Executing [s@wazo-add-pre-dial-hook:1] Set("PJSIP/qrz60xl9-0000019e", "HANDLER=callorigin-extern") in new stack
Executing [s@wazo-add-pre-dial-hook:2] Set("PJSIP/qrz60xl9-0000019e", "PUSH(_WAZO_PRE_DIAL_HANDLERS,|)=callorigin-extern,s,1") in new stack
Executing [s@wazo-add-pre-dial-hook:3] Return("PJSIP/qrz60xl9-0000019e", "") in new stack
Executing [s@callorigin:6] Return("PJSIP/qrz60xl9-0000019e", "") in new stack
Executing [s@xivo-subrgbl-group:3] Return("PJSIP/qrz60xl9-0000019e", "") in new stack
Executing [s@xivo-global-subroutine:6] Return("PJSIP/qrz60xl9-0000019e", "") in new stack
Executing [s@group:20] AGI("PJSIP/qrz60xl9-0000019e", "agi://localhost/record_caller") in new stack
localhost/record_caller: AGI handler 'record_caller' successfully executed
<PJSIP/qrz60xl9-0000019e>AGI Script agi://localhost/record_caller completed, returning 0
Executing [s@group:21] GotoIf("PJSIP/qrz60xl9-0000019e", "?:queue") in new stack
Goto (group,s,25)
Executing [s@group:25] Queue("PJSIP/qrz60xl9-0000019e", "grp-xxxxdefa-21255534-a677-4391-9c5e-913a72272249,ir,,,,,,wazo-group-answered") in new stack
Called Local/6de2e002-b8b1-4b18-9d1b-e1c36ceb44f7@usersharedlines
Called Local/fed70829-32e8-4f11-9e73-c80f1673371d@usersharedlines

Voici mon dialplan (c’est du labo pour du test : minimaliste)

[callorigin]
exten = s,1,DumpChan()
same = n,NoOp("MODULE DE CALL ORIGIN")
same = n,NoOp("Source ${XIVO_CALLORIGIN})

same = n,GotoIf($[${EXISTS(${XIVO_CALLORIGIN})}]?:return)

same = n,ExecIf($[${XIVO_CALLORIGIN}=extern]?GoSub(wazo-add-pre-dial-hook,s,1(callorigin-extern)):GoSub(wazo-add-pre-dial-hook,s,1(callorigin-intern)))

same = n(return), return();

[callorigin-extern]
exten = s,1,NoOp("CALLORIGIN EXTERN")
same = n,Set(PJSIP_HEADER(add,Alert-Info)=<http://www.proformatique.com>\;info=alert-external)

same = n(return), return()

[callorigin-intern]
exten = s,1,NoOp("CALLORIGIN INTERN")
same = n,Set(PJSIP_HEADER(add,Alert-Info)=<http://www.proformatique.com>\;info=alert-internal)

same = n(return), return()

Niveau version je suis sur du 22.04 / 22.02

Mes membres des groupes sont bien des “members” pas des “extensions” si c’était ta question.

Je parlais de cette partie. Mais j’ai ma réponse.

On a pas mis de sous routine dans cette partie malheureusement …
Je te propose de faire un fichier group.conf par exemple dans /etc/asterisk/extensions_extra.d/ avec le contenu suivant :

[usersharedlines]
; exten should be a user UUID
exten = _[0-9a-f].,1,AGI(agi://${XIVO_AGID_IP}/get_user_interfaces,${EXTEN})
same  =            n,AGI(agi://${XIVO_AGID_IP}/wake_mobile,${EXTEN})
same  =            n,Dial(${WAZO_USER_INTERFACES})
same  =            n,Hangup()

Tu peux insérer ici ce que tu as besoin en terme de dialplan, garde juste l’esprit des 4 lignes qui sont importantes.
Penses à faire un dialplan reload.

Sylvain

Ok j’ai testé voici ce que j’ai modifié dans le group.conf.

[usersharedlines]
; exten should be a user UUID
exten = _[0-9a-f].,1,AGI(agi://${XIVO_AGID_IP}/get_user_interfaces,${EXTEN})
same  =            n,AGI(agi://${XIVO_AGID_IP}/wake_mobile,${EXTEN})
same  =            n,GoSub(wazo-add-pre-dial-hook,s,1(wazo-usergroup))
same  =            n,GoSub(wazo-schedule-pre-dial-hooks,s,1)
same  =            n,Dial(${WAZO_USER_INTERFACES},${XIVO_RINGSECONDS},${XIVO_CALLOPTIONS})
same  =            n,Hangup()

[wazo-usergroup]
exten = s,1,NoOp(My subroutine)
same  =   n,DumpChan()
same  =   n,NoOp("MODULE DE CALL ORIGIN")
same  =   n,NoOp("Source ${XIVO_CALLORIGIN})
same =    n,Set(PJSIP_HEADER(add,Alert-Info)=<http://www.proformatique.com>\;info=alert-external)
same  =   n,Return()

Je vois bien dans mon invite le alert-info.

Par contre attention si tu utilises la mécanique push/mobile ça ne fonctionne pas car le dial est très différent et ce n’est pas possible de le faire ainsi.

Sylvain

Bonjour,

Merci beaucoup pour l’astuce du usersharedlines.

J’ai testé ça fonctionne bien je peux bien manier mon Header SIP.

Je l’ai dynamisé en me basant sur la variable xivo_callorigin pour définir si c’est un appel interne ou
externe qui passe par le groupe.

De ce que je vois cette variable n’existe pas si c’est un appel interne, autrement elle est setté à extern.

same  =   n,GotoIf($[${EXISTS(${XIVO_CALLORIGIN})}]?:internal)
same  =   n,NoOp("Source ${XIVO_CALLORIGIN})
same  =   n,ExecIf($[${XIVO_CALLORIGIN}=extern]?Set(PJSIP_HEADER(add,Alert-Info)=<http://www.proformatique.com>\;info=alert-external))
same  =   n,GoTo(return)
same  =   n(internal),Set(PJSIP_HEADER(add,Alert-Info)=<http://www.proformatique.com>\;info=alert-internal)
same  =   n(return),Return()

En tout cas merci beaucoup pour le coup de main :slight_smile:

1 Like

Une petite remarque toutefois.
Lorsque je reload mon dialplan je recupère ce message d’erreur dans la CLI asterisk :slight_smile:

[2022-05-06 15:16:19.1863] WARNING[8247]: pbx.c:7156 add_priority: Unable to register extension '_[0-9a-f].' priority 1 in 'usersharedlines', already in use
[2022-05-06 15:16:19.1863] WARNING[8247]: pbx_config.c:1891 pbx_load_config: Unable to register extension at line 1509 of /usr/share/xivo-config/dialplan/asterisk/extensions_lib_user.conf
[2022-05-06 15:16:19.1863] WARNING[8247]: pbx.c:7156 add_priority: Unable to register extension '_[0-9a-f].' priority 2 in 'usersharedlines', already in use
[2022-05-06 15:16:19.1863] WARNING[8247]: pbx_config.c:1891 pbx_load_config: Unable to register extension at line 1510 of /usr/share/xivo-config/dialplan/asterisk/extensions_lib_user.conf
[2022-05-06 15:16:19.1863] WARNING[8247]: pbx.c:7156 add_priority: Unable to register extension '_[0-9a-f].' priority 3 in 'usersharedlines', already in use
[2022-05-06 15:16:19.1863] WARNING[8247]: pbx_config.c:1891 pbx_load_config: Unable to register extension at line 1511 of /usr/share/xivo-config/dialplan/asterisk/extensions_lib_user.conf
[2022-05-06 15:16:19.1863] WARNING[8247]: pbx.c:7156 add_priority: Unable to register extension '_[0-9a-f].' priority 4 in 'usersharedlines', already in use
[2022-05-06 15:16:19.1863] WARNING[8247]: pbx_config.c:1891 pbx_load_config: Unable to register extension at line 1512 of /usr/share/xivo-config/dialplan/asterisk/extensions_lib_user.conf

Toutefois ça ne semble pas gêner le fonctionnement puisque mes headers sont bien positionnés.

On peut l’ignorer ou le traiter d’une façon ?

C’est un warning normal, vu qu’on a un peu hack le système :wink:

OK merci pour l’info ! :slight_smile: