Currently I’m tasked with developing a desktop application to do outgoing calls. The application will be used by 5-6 users. This is what the application is doing:
When user clicks “Call” button in the app, the app will generate a unique GUID (f.e. 6bf11dfb-4e6c-4eb4-85cd-6c8b8026019f), then it will send the following command:
Exten: 081299999 (destination number)
CallerId: 10000 (the user’s extension)
ActionId: 6bf11dfb-4e6c-4eb4-85cd-6c8b8026019f (the geenrated GUID)
The user’s softphone (Zoiper) pops up and user starts talking on the phone
My app checks the call status by sending this command:
The problem is:
The asterisk server sends me a response containing correct ActionId 6bf11dfb-4e6c-4eb4-85cd-6c8b8026019f, but with destination and extension number belonging to other user (not 081299999 and 10000).
Worse, the returned uniqueid belongs to call made by other user which cause the app linking wrong CDR data to the call record (because the uniqueid belongs to other call made by other user).
However this situation occured randomly, sometimes the server returned correct call, sometimes wrong one. There are also instances where the recording was not created and not saved in CDR table.
Please note that the GUID used in ActionID is truly unique, each click to “Call” button will regenerate new GUID.
My question is:
- Is it possible that a unique ActionID is assigned to another call originated by other party? Other originated calls will certainly be assigned with different ActionIDs.
- What is actually the purpose of ActionID? Am I using it correctly? The documentation said it can be used as identifier that we can query later when we need info the call we made.
I developed the app using C#.NET, connecting to asterisk server using TCP socket connection. The asterisk server version is 11.3.
Really appreciate your help. Thanks.