Here is an excerpt from the dialplan (into which my channel will be sent). It’s a part of FreePBX’s conference dialplan code:
exten => STARTMEETME,1,ExecIf($["${MEETME_MUSIC}" != ""]?Set(CONFBRIDGE(user,music_on_hold_class)=${MEETME_MUSIC}))
exten => STARTMEETME,n,ExecIf($["${MEETME_MUSIC}" != ""]?Set(CHANNEL(musicclass)=${MEETME_MUSIC}))
exten => STARTMEETME,n,Set(GROUP(meetme)=${MEETME_ROOMNUM})
exten => STARTMEETME,n,GotoIf($[${MAX_PARTICIPANTS} > 0 && ${GROUP_COUNT(${MEETME_ROOMNUM}@meetme)}>${MAX_PARTICIPANTS}]?MEETMEFULL,1)
exten => STARTMEETME,n,ConfBridge(${MEETME_ROOMNUM},,,${MENU_PROFILE})
exten => STARTMEETME,n,Macro(hangupcall,)
I am posting the following information to the ARI. You can see the query parameters as pretty key value pairs, followed by the raw query parameters, followed by the body sent in the post:
-----[ Query Parameters ]-----------------------------------------------------
endpoint: PJSIP/410/sip:410@172.31.253.20;port=5060
context: ext-meetme
extension: 2663
priority: 1
label: ADMIN
callerId: "Test" <123>
timeout: 10
channelId: Conf_Bridge_0_Channel_0
-----[ Raw Query Parameters ]-------------------------------------------------
endpoint=PJSIP/410/sip:410@172.31.253.20;port%3D5060&context=ext-meetme&extension=2663&priority=1&label=ADMIN&callerId=%22Test%22%20%3C123%3E&timeout=10&channelId=Conf_Bridge_0_Channel_0
-----[ Json Send Body ]-------------------------------------------------------
{
"variables": {
"MEETME_ROOMNUM": "2663",
"MENU_PROFILE": "admin_menu"
}
}
But the code fails because the MEETME_ROOMNUM channel variable is missing, and the MENU_PROFILE channel variable is missing too. The Asterisk CLI shows the following output for line 5 of the dialplan (shown above):
Executing [STARTMEETME@ext-meetme:5] ConfBridge("PJSIP/410-00000005", ",,,") in new stack
confirming the channel variables are not set. Why not?
Is my ARI query body format correct? Is the JSON invalid? Any other ideas?