[asterisk-dev] func_odbc auto commit at answer time

Dennis Buteyn dennis.buteyn at xorcom.com
Wed Feb 24 02:07:38 CST 2021


On 2/24/21 1:01 AM, Jaco Kroon wrote:
>
> Hi,
>
> I still think the changes for forcecommit should be done for 
> func_odbc, however, after various discussions we've decided to give 
> the daemon route a shot.
>
> So just looking at the raw AMI event via UserEvent, this seems to have 
> a problem with quoting, for example:
>
> Set(ODBC_trace()=CallerID: ${CALLERID(all)})
> UserEvent(trace,Message: CallerID: ${CALLERID(all)})
>
> The former in the DB ends up as:  CallerID: "name" <number>
>
> The quotes are missing in the AMI event:
>
> Message: CallerID name <number>
>
> Is this a bug, or am I missing some escaping that needs to happen 
> prior to passing to UserEvent?
>
> Kind Regards,
> Jaco
>
Interesting, I couldn't find anyone having similar problems nor any 
working examples. I tried /UserEvent(trace,Message: CallerID: 
${QUOTE(${CALLERID(all)})})/ but that becomes /AppData: trace, CallerID: 
"\"2000\" <2000>"/. I guess UserEvent() is having a bad day. While 
trying to encode the body as JSON (which also doesn't work) I did find 
the workaround below which I think is pretty close:

UserEvent(trace,CallerID:{${QUOTE(${CALLERID(all)})}},Val:{${QUOTE("quoted")}})

Event: UserEvent
Privilege: user,all
Channel: SIP/2000-00000016
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 2000
CallerIDName: 2000
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: en
AccountCode:
Context: sub-speakextennum
Exten: s
Priority: 3
Uniqueid: 1614152491.107
Linkedid: 1614152491.107
UserEvent: trace
CallerID: {"2000" <2000>}
Val: {"quoted"}

In any case, the UserEvent itself already contains the CID (CallerIDNum, 
CallerIDName) but I assume you were testing quoting behavior.

There is also the alternative of listening to VarSet events. It is much 
more spammy but is more straight-forward in dialplan and works with arrays:

Set(ARRAY(CallerID,Val)=${QUOTE(${CALLERID(all)})},${QUOTE("quoted")})

Event: VarSet
Privilege: dialplan,all
Channel: SIP/2000-0000001a
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 2000
CallerIDName: 2000
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: en
AccountCode:
Context: sub-speakextennum
Exten: s
Priority: 3
Uniqueid: 1614153653.127
Linkedid: 1614153653.127
Variable: CallerID
Value: \"2000\" <2000>

Event: VarSet
Privilege: dialplan,all
Channel: SIP/2000-0000001a
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 2000
CallerIDName: 2000
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: en
AccountCode:
Context: sub-speakextennum
Exten: s
Priority: 3
Uniqueid: 1614153653.127
Linkedid: 1614153653.127
Variable: Val
Value: \"quoted\"

Another alternative would be to format the event per your own preferences:

UserEvent(CallerID=${QUOTE(${CALLERID(all)})}|Val=${QUOTE("quoted")})

Event: UserEvent
Privilege: user,all
Channel: SIP/2000-00000019
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 2000
CallerIDName: 2000
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: en
AccountCode:
Context: sub-speakextennum
Exten: s
Priority: 3
Uniqueid: 1614153302.122
Linkedid: 1614153302.122
UserEvent: CallerID="2000" <2000>|Val="quoted"


-- 
Dennis Buteyn
Xorcom Ltd

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20210224/bab1873f/attachment-0001.html>


More information about the asterisk-dev mailing list