我曾经使用预先配置的星号来拨打电话(使用AMI)。当我这样做时,来自origin的响应曾经有通道和唯一id信息。现在我正在尝试构建一个新的Asterisk。一切都已设置但是当我打电话时只发出响应的信息是“呼叫成功排队”。
是否有隐藏在某处的“显示响应额外信息”等选项?
你可以找到我得到的两种不同的回答。
这是旧的,包括一些有价值的信息。
Response: Success
ActionID: 6bf11dfb-4e6c-4eb4-85cd-6c8b8026019f
Message: Originate successfully queued
Event: Newchannel
Privilege: call,all
Channel: SIP/1030-000058aa
State: Down
CallerIDNum: <unknown>
CallerIDName: <unknown>
Uniqueid: 1339103821.22750
Event: Newcallerid
Privilege: call,all
Channel: SIP/1030-000058aa
CallerID: 05359348602
CallerIDName: <Unknown>
Uniqueid: 1339103821.22750
CID-CallingPres: 0 (Presentation Allowed, Not Screened)
Event: ExtensionStatus
Privilege: call,all
Exten: 1030
Context: ext-local
Status: 8
Event: Newstate
Privilege: call,all
Channel: SIP/1030-000058aa
State: Ringing
CallerID: 05359348602
CallerIDName: <unknown>
Uniqueid: 1339103821.22750
Event: Newstate
Privilege: call,all
Channel: SIP/1030-000058aa
State: Up
CallerID: 05359348602
CallerIDName: <unknown>
Uniqueid: 1339103821.22750
Event: ExtensionStatus
Privilege: call,all
Exten: 1030
Context: ext-local
Status: 1
这是新的,什么都不说
Response: Success
ActionID: 98518f9a-c7cb-4b63-8de4-e185f57508d8
Message: Originate successfully queued
感谢。
答案 0 :(得分:3)
您没有提供有关您要发送的实际操作(其参数)的更多信息,但我会拍摄(长?)镜头。我想你可能正在发送异步发起动作,但你真的想要同步行为。
“异步发起操作”意味着星号将接受该命令,但会异步发出调用,然后通过事件告知您是否成功,该事件将在稍后到达
因此,在您的情况下,星号只是让您知道该命令已到达,并且该呼叫将最终放置。在这种情况下,您应该侦听具有发起调用的操作的actionid的传入事件,并在此时做出反应。
但是,如果你想以同步的方式知道呼叫是否真的得到应答(即:在呼叫有拨号状态之前让星号不响应你的动作),尝试设置始发动作的async参数为假。
请参阅:https://wiki.asterisk.org/wiki/display/AST/ManagerAction_Originate。注意“异步”参数,这就是你要找的东西。
这里也有说明:http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate
希望它有所帮助!
答案 1 :(得分:1)
我在使用Async时遇到了与收到没有OriginateResponse相同的问题:是的,问题证明是管理员用户帐户的权限。
AMI用户帐户需要具有写入权限“all”或写入权限“call”(发起是不够的)。像这样:
[username]
secret=hello
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read=orignate,call
write=originate,command,system,call