Set custom SIP header in ESL Outbound
Another newbie question, if I may: (I realise this may be more of a modesl/node-esl question than an ESL question per se.) I'm using node-esl/modesl for ESL outbound actions, and can't figure out how to get it to append a custom SIP header on the B leg. Were it the case that the 'set' formula were the same as with most conventional variables, set via a 'params' tag attribute, it'd be easy: conn.execute('set', 'foo=bar'); However, in the case of the ${sip_h...} container, this is specified as the body value of the <action> tag, not a 'params' attribute. Example per http://wiki.freeswitch.org/wiki/Sofia-SIP#Adding_Custom_Headers: <action application="set"><![CDATA[sip_h_P-Charge-Info=<sip:${caller_id_number}@${domain_name}>;npi=0;noa=3]]></action> I can't quite figure out how to get the API to mimic this effect. The second argument to the execute() method appears to get turned into tag attributes only. From https://github.com/englercj/node-esl/blob/master/lib/esl/connection.js: Connection.prototype.execute = function(app, arg, uuid, cb) { ... opts['execute-app-name'] = app; opts['execute-app-arg'] = arg; ... Am I just SOL on that one? I suppose one option is to run the call through a loopback endpoint that takes care of the header-setting in dialplan XML, but, as the aim is to build a thoroughly API-controlled environment, I'd rather avoid that kludge if I can help it. Any insights appreciated! -- Alex -- Alex Balashov - Principal Evariste Systems LLC 235 E Ponce de Leon Ave Suite 106 Decatur, GA 30030 United States Tel: +1-678-954-0670 Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
It seems my question may be somewhat misplaced, inasmuch as elsewhere in the documentation it says that I can add SIP headers to outbound calls simply by adding ordinary sip_h_* channel variables: http://wiki.freeswitch.org/wiki/Sofia-SIP#Adding_Request_Headers If true, that's very confusing in relation to the "Custom Headers" section, which insists that the operation be a CDATA attribute inside an <action> tag. Anyway, I'll give this a try. If it works, it obviates the need to answer my question. :-) -- Alex On 12/11/2013 06:23 AM, Alex Balashov wrote:
Another newbie question, if I may:
(I realise this may be more of a modesl/node-esl question than an ESL question per se.)
I'm using node-esl/modesl for ESL outbound actions, and can't figure out how to get it to append a custom SIP header on the B leg.
Were it the case that the 'set' formula were the same as with most conventional variables, set via a 'params' tag attribute, it'd be easy:
conn.execute('set', 'foo=bar');
However, in the case of the ${sip_h...} container, this is specified as the body value of the <action> tag, not a 'params' attribute. Example per http://wiki.freeswitch.org/wiki/Sofia-SIP#Adding_Custom_Headers:
<action application="set"><![CDATA[sip_h_P-Charge-Info=<sip:${caller_id_number}@${domain_name}>;npi=0;noa=3]]></action>
I can't quite figure out how to get the API to mimic this effect. The second argument to the execute() method appears to get turned into tag attributes only. From https://github.com/englercj/node-esl/blob/master/lib/esl/connection.js:
Connection.prototype.execute = function(app, arg, uuid, cb) { ...
opts['execute-app-name'] = app; opts['execute-app-arg'] = arg;
...
Am I just SOL on that one?
I suppose one option is to run the call through a loopback endpoint that takes care of the header-setting in dialplan XML, but, as the aim is to build a thoroughly API-controlled environment, I'd rather avoid that kludge if I can help it.
Any insights appreciated!
-- Alex
-- Alex Balashov - Principal Evariste Systems LLC 235 E Ponce de Leon Ave Suite 106 Decatur, GA 30030 United States Tel: +1-678-954-0670 Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
participants (1)
-
Alex Balashov