Manager API Originate external call to conference/MeetMe


#1

This is partially in response to a thread (forums.digium.com/viewtopic.php?t=5077) in the User forum but I feel the response and direction of this post is more suited for the developers.

I am also trying to accomplish something similar to what was described previously.

I am issuing the Originate command via the API to dial an external number via an analog line and connect it to an already established conference room.

Here is the relavent portion of my dial plan:

[joinconf]
exten => _6XXX,1,MeetMe(${EXTEN},xq)

[dialer]
exten => _NXXXXXX,1,Set(phonenumber=${EXTEN})
exten => _NXXXXXX,2,Goto(makecall,1)

exten => makecall,1,Dial(Zap/G1/ww${phonenumber},30)
exten => makecall,2,Goto(s-${DIALSTATUS},1)

exten => s-NOANSWER,1,NoOP(No answer)
exten => s-BUSY,1,NoOP(Busy)
exten => s-CONGESTION,1,NoOP(Fast Busy / Congestion)
exten => s-CHANUNAVAIL,1,NoOP(Line Unavailable)
exten => s-ANSWER,1,NoOP(Answered)
exten => s-CANCEL,1,NoOP(Exten Hung Up Early)

Here is the command I am issuing via the API:

Action: Originate
Channel: local/6000@joinconf
Exten: 5832751
Priority: 1
Context: dialer
ActionID: 981

Here is the output I see on the console:

    -- Executing MeetMe("Local/6000@joinconf-d226,2", "6000|xq") in new stack
       > Channel Local/6000@joinconf-d226,1 was answered.
    -- Executing Set("Local/6000@joinconf-d226,1", "phonenumber=5832751") in new stack
    -- Executing Goto("Local/6000@joinconf-d226,1", "makecall|1") in new stack
    -- Goto (dialer,makecall,1)
    -- Executing Dial("Local/6000@joinconf-d226,1", "Zap/G1/ww5832751|30") in new stack
    -- Called G1/ww5832751
    -- Zap/22-1 answered Local/6000@joinconf-d226,1
  == Spawn extension (dialer, makecall, 1) exited non-zero on 'Local/6000@joinconf-d226,1'
  == Spawn extension (joinconf, 6000, 1) exited non-zero on 'Zap/22-1'
    -- Hungup 'Zap/22-1'

The problem is this: At the time the Dial application is called, it is returning the “answered” status eventhough I can still hear the line ringing in the conference. If I dial a number in use (should be busy), output to the console shows it “answered” and then hungup (due to the busy signal detection) but the Dial application still sets the DIALSTATUS to ANSWER, not BUSY.

I’m guessing that it has something to do with the Dial application being linked to the conference. Somehow it might be confusing that into thinking the other line was “answered”.

Any thoughts?

P.S. In the above example, I’m specifying the “channel” as the conference room and the external number as the extension to be dialed. I have also tried this in reverse; dialing the external number as the “channel” and connecting it to the “exten” of the conference room. It produced the same results.