[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