[asterisk-dev] Add SIP Header with PJSIP in C module

Benoit Duverger bduverger at atwtech.com
Wed Oct 21 20:56:52 CDT 2020


Thanks, it's working now and I understand why I must use these Pre-Dial
Handlers.

*Module C*:
sprintf(cmd, "Dial(PJSIP/%s@%s,10,b(my_predial^s^1^(%s^%s^%s^%s^%s^%s^%s)))",
extension, node, shortuniqueid, command, script, script_params, carrier,
monitor, remaintime);
res = astcmd(chan, cmd);

*Dialplan*:
[my_predial]
exten => s,1,Set(PJSIP_HEADER(add,X-uidorig)=${ARG1})
exten => s,n,Set(PJSIP_HEADER(add,X-command)=${ARG2})
exten => s,n,Set(PJSIP_HEADER(add,X-script)=${ARG3})
exten => s,n,Set(PJSIP_HEADER(add,X-params)=${ARG4})
exten => s,n,Set(PJSIP_HEADER(add,X-options)=${ARG5},${ARG6},${ARG7})
exten => s,n,Return()

Thanks to Richard Mudgett and Neimar.

Le mer. 21 oct. 2020 à 13:52, Richard Mudgett <rmudgett at digium.com> a
écrit :

> With chan_sip you had to add those headers on the incoming channel.  With
> PJSIP you cannot add them to the incoming channel
> as you showed.  You MUST add those headers to the outgoing channel for the
> outgoing channel to use the headers.
>
> same = n,NoOp(This is the incoming channel which could be
> PJSIP/200-xxxxxxxx)
> same = n,Dial(PJSIP/101,10,b(my_predial))
> same = n,Hangup()
> ; This pre-dial handler executes on the outgoing channel which would be
> PJSIP/101-xxxxxxxx
> same = n(my_predial),Set(PJSIP_HEADER(add,X-MyHeader)=valuetest)
> same = n,Return()
>
> Richard
>
> https://wiki.asterisk.org/wiki/display/AST/Asterisk+18+Application_Dial
>
> On Wed, Oct 21, 2020 at 12:28 PM Benoit Duverger <bduverger at atwtech.com>
> wrote:
>
>> Thanks for your quick answer.
>>
>> I'm not sure to understand how Pre-Dial Handlers can help my module
>> written in C. But if I decide to rewrite this module in asterisk language,
>> that could help me. For the moment I hope to fix my C module.
>>
>> A big resume of what this part of my module do is:
>> pbx_exec(chan, "SipAddHeader(X-MyHeader:valuetest)");
>> pbx_exec(chan, "Dial(SIP/101 at trunk-test,10)");
>> That works in asterisk 1.8, 11 and probably in asterisk 16 if I use
>> chan_sip but SipAddHeader is no longer a valid application in my asterisk
>> because I don't load chan_sip.so, just all modules related to PJSIP.
>>
>> So with PJSIP, I try:
>> pbx_builtin_setvar_helper(chan, "PJSIP_HEADER(add,X-MyHeader)",
>> "valuetest");
>> pbx_exec(chan, "Dial(PJSIP/101 at trunk-test,10)");
>>
>> I didn't have any errors but my header is not added.
>>
>> Thanks
>>
>>
>> Le mer. 21 oct. 2020 à 12:23, Richard Mudgett <rmudgett at digium.com> a
>> écrit :
>>
>>> You add headers in a similar way as before.  It is just a matter of
>>> adding them to the right channel.
>>> You must add them to the outgoing channel for PJSIP.  This can be
>>> accomplished by using pre-dial handlers [1][2].
>>>
>>> Richard
>>>
>>> [1] https://wiki.asterisk.org/wiki/display/AST/Pre-Dial+Handlers
>>> [2]
>>> https://www.asterisk.org/dialplan-handler-routines-allow-customization/
>>>
>>> On Wed, Oct 21, 2020 at 10:49 AM Benoit Duverger <bduverger at atwtech.com>
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> We have a module written in C which was developed initially for
>>>> asterisk 1.4, modified a few years ago to run in asterisk 1.8 then 11. This
>>>> module is used to verify user's limits, route calls etc...
>>>> Actually, I try to adapt it to run in asterisk 16, I moved from
>>>> chan_sip to PJSIP and I don't know how can I add SIP Headers into the
>>>> channel. With chan_sip we used that:
>>>> sprintf( cmd, "SipAddHeader(command:%s)", command );
>>>> res = astcmd( chan, cmd );
>>>> astcmd is a custom function wrapped onto pbx_exec().
>>>>
>>>> I tried to use pbx_builtin_setvar_helper(), with the function
>>>> PJSIP_HEADER() but I didn't see any custom headers in SIP... and no errors,
>>>> res = 0.
>>>> res = pbx_builtin_setvar_helper(chan, "PJSIP_HEADER(add, X-test)",
>>>> "test");
>>>>
>>>>
>>>> How can I use PJSIP_HEADER in a C module ?, which libraries should I
>>>> need to import ?
>>>>
>>>> Thanks
>>>>
>>>> --
>>>>
>>>> Benoit
>>>> --
>>>> _____________________________________________________________________
>>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>>
>>>> asterisk-dev mailing list
>>>> To UNSUBSCRIBE or update options visit:
>>>>    http://lists.digium.com/mailman/listinfo/asterisk-dev
>>>
>>> --
>>> _____________________________________________________________________
>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>
>>> asterisk-dev mailing list
>>> To UNSUBSCRIBE or update options visit:
>>>    http://lists.digium.com/mailman/listinfo/asterisk-dev
>>
>>
>>
>> --
>> *Benoit Duverger*
>> *Administrateur Systèmes et Réseaux*
>> Sysadmin
>> T : 514- <(514)%20985-2570>*985-2570* #148
>> www.atwtech.com
>> 1050 de la Montagne, Suite 400
>> Montréal (Québec) H3G 1Y8
>> *Avis de confidentialité*
>> Le contenu de ce message ainsi que du ou des fichiers qui y sont joints
>> est strictement confidentiel et destiné exclusivement à son ou sa
>> destinataire. Si vous n’êtes pas cette personne, nous attirons votre
>> attention sur le fait qu’il est strictement interdit de copier, de faire
>> suivre ou d’utiliser les informations contenues dans ce courriel. Si vous
>> l’avez reçu par erreur, nous vous remercions de nous le faire savoir et de
>> détruire toute copie de ce message.
>>
>> *Confidentiality Warning*
>> The information contained in this email and any attachments may be
>> privileged, confidential, and/or proprietary and is intended solely for the
>> use of the person(s) to whom it is addressed. If you are not the intended
>> recipient, any review, retransmission, dissemination or any other use of
>> the information contained in this email and any attachments is strictly
>> prohibited. If you have received this communication in error, please notify
>> the sender immediately by replying to this email and delete all copies of
>> the message.
>> --
>> _____________________________________________________________________
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>
>> asterisk-dev mailing list
>> To UNSUBSCRIBE or update options visit:
>>    http://lists.digium.com/mailman/listinfo/asterisk-dev
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev



-- 
*Benoit Duverger*
*Administrateur Systèmes et Réseaux*
Sysadmin
T : 514- <(514)%20985-2570>*985-2570* #148
www.atwtech.com
1050 de la Montagne, Suite 400
Montréal (Québec) H3G 1Y8
*Avis de confidentialité*
Le contenu de ce message ainsi que du ou des fichiers qui y sont joints est
strictement confidentiel et destiné exclusivement à son ou sa destinataire.
Si vous n’êtes pas cette personne, nous attirons votre attention sur le
fait qu’il est strictement interdit de copier, de faire suivre ou
d’utiliser les informations contenues dans ce courriel. Si vous l’avez reçu
par erreur, nous vous remercions de nous le faire savoir et de détruire
toute copie de ce message.

*Confidentiality Warning*
The information contained in this email and any attachments may be
privileged, confidential, and/or proprietary and is intended solely for the
use of the person(s) to whom it is addressed. If you are not the intended
recipient, any review, retransmission, dissemination or any other use of
the information contained in this email and any attachments is strictly
prohibited. If you have received this communication in error, please notify
the sender immediately by replying to this email and delete all copies of
the message.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20201021/52d3e5e8/attachment.html>


More information about the asterisk-dev mailing list