panoramisk icon indicating copy to clipboard operation
panoramisk copied to clipboard

panoramisk not capturing result of Async AGI command

Open gedia opened this issue 2 years ago • 1 comments

Hello,

I've been experimenting with panoramisk lately, and I've discovered what I believe to be a bug, and also a potential solution for it. However, I'm opening an issue rather than a pull request since I'm by no means an expert in either panoramisk or asyncio.

The following statements:

action = actions.Command({'Action': 'AGI',
                          'Channel': agi['agi_channel'],
                          'Command': 'GET FULL VARIABLE ${PJSIP_HEADER(read,Call-ID)}'},
                          as_list=True)
res = await manager.send_action(action)

do not yield a result with code from the current git master. After digging a little, I found that in def completed(self) in actions.py, none of the conditions match the AsyncAGIExec event asterisk produces, and which carries the result. A patch as simple as:

--- a/panoramisk/actions.py
+++ b/panoramisk/actions.py
@@ -90,6 +90,8 @@
         resp = self.responses[-1]
         if resp.event.endswith('Complete'):
             return True
+        elif resp.event in ('AsyncAGIExec'):
+            return True
         elif resp.subevent in ('End', 'Exec'):
             return True
         elif resp.response in ('Success', 'Error', 'Fail', 'Failure'):

seems to fix that, but I'm not sure if that's the best approach here.

Here's the sequence of actions/events the send_action above triggers:

<--- Examining AMI action: -->
Action: AGI
ActionID: action/186daec3-bfdc-437d-b110-1fb7cfc019d8/1/1196
Channel: PJSIP/test-gd-0000003d
Command: GET FULL VARIABLE ${PJSIP_HEADER(read,Call-ID)}
CommandID: command/1ac20057-d646-431e-87aa-976b15caa68a/1/3

<-- Examining AMI event: -->
Event: AGIExecStart
Privilege: agi,all
SequenceNumber: 964
File: manager.c
Line: 1864
Func: manager_default_msg_cb
SystemName: mgw0-stage-tis0-cn1
Channel: PJSIP/test-gd-0000003d
ChannelState: 4
ChannelStateDesc: Ring
CallerIDNum: test-gd
CallerIDName: stage
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: gr
AccountCode: 165
Context: endpoints-in
Exten: 123456
Priority: 1
Uniqueid: mgw0-stage-tis0-cn1-1653995979.61
Linkedid: mgw0-stage-tis0-cn1-1653995979.61
CommandId: 1082775508
Command: GET FULL VARIABLE ${PJSIP_HEADER(read,Call-ID)}


<-- Examining AMI event: -->
Event: AGIExecEnd
Privilege: agi,all
SequenceNumber: 965
File: manager.c
Line: 1864
Func: manager_default_msg_cb
SystemName: mgw0-stage-tis0-cn1
Channel: PJSIP/test-gd-0000003d
ChannelState: 4
ChannelStateDesc: Ring
CallerIDNum: test-gd
CallerIDName: stage
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: gr
AccountCode: 165
Context: endpoints-in
Exten: 123456
Priority: 1
Uniqueid: mgw0-stage-tis0-cn1-1653995979.61
Linkedid: mgw0-stage-tis0-cn1-1653995979.61
CommandId: 1082775508
Command: GET FULL VARIABLE ${PJSIP_HEADER(read,Call-ID)}
ResultCode: 200
Result: Success


<-- Examining AMI event: -->
Event: AsyncAGIExec
Privilege: agi,all
SequenceNumber: 966
File: manager.c
Line: 1864
Func: manager_default_msg_cb
SystemName: mgw0-stage-tis0-cn1
Channel: PJSIP/test-gd-0000003d
ChannelState: 4
ChannelStateDesc: Ring
CallerIDNum: test-gd
CallerIDName: stage
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: gr
AccountCode: 165
Context: endpoints-in
Exten: 123456
Priority: 1
Uniqueid: mgw0-stage-tis0-cn1-1653995979.61
Linkedid: mgw0-stage-tis0-cn1-1653995979.61
Result: 200%20result%3D1%20(586f113295b1f8b6dd9dc39bcedfdc80)%0A
CommandId: command/1ac20057-d646-431e-87aa-976b15caa68a/1/3

After the patch, the future contains two items in a list, the first holding the Message='Added AGI command to queue' and Response='Success' keys (this event doesn't show up in asterisk manager debug, wonder why), the second the contents of AsyncAGIExec event above, including the Result key which carries the information needed.

gedia avatar May 31 '22 11:05 gedia

#89

kontsaki avatar Jun 22 '22 17:06 kontsaki

I believe this is fixed in 3d851ce15f9306771c552f08597b72c05012ebd1 so since I'm the author of this issue I'm gonna go ahead and close it. Thanks!

gedia avatar May 19 '23 12:05 gedia