Looking for ideas and comments on my strategy for getting a bit of custom data into the CDR. It seems to work OK, but I'm open to better and/or more robust ways to do it. Problem: get the customerid of the caller from our application into the CDR Approach: Before the Queue() command, save the caller's channel name in a varible _MMCALLERCHANNEL In the Queue() connect macro, send that channel name along with other info to the application The application determines the customerid and uses AMI Setvar to set variable MMCUSTOMERID on the given channel with the customerid. (Can't use AGI in-line because the customer will be determined by an actual human sitting at a terminal during the call and may take a while.) In the hangup extension, set CDR(customerid) to value of MMCUSTOMERID Here is the code that is working [queues] exten =>sales,1,Verbose(2,${CALLERID(all)} entering the sales queue) same =>n,Set(_MMCALLERCHANNEL=${CHANNEL(name)}) same =>n,Queue(sales,t,,,,,QueueConnected) same =>n,Hangup() exten =>h,1,NoOp(When a sales queue call is hung up) same =>n,Set(CDR(customerid)=${MMCUSTOMERID}) [macro-QueueConnected] exten =>s,1,NoOp() same =>n,Monitor(wav,,mb) same =>n,Set(OPERATORID=${ODBC_OPERATORID_FROM_ADDRESS(${MEMBERINTERFACE})}) ; userfield is mapped to operatorid in cdr_adaptive_odbc because setting operatorid directly doesn't work here same =>n,Set(CDR(userfield)=${OPERATORID}) ; passes the call to the application same =>n,System(${MMAGI}/queue_action.sh action:connect,queue:sales,member_interface:\\"${MEMBERINTERFACE}\\",member_name:\\"${MEMBERNAME}\\",cidnum:\\"${CONNECTEDLINE(num)}\\",cidname:\\"${CONNECTEDLINE(name)}\\",uniqueid:\\"${MMLINKEDID}\\",channel:\\"${MMCALLERCHANNEL}\\") -- Mitch