我有以下功能,目標是從Asterisk服務器的Python Web界面接聽來電。星號AMI來電不會返回任何電話
def fetch_events(event, manager):
with app.app_context():
if event.name == 'CoreShowChannel':
id = event.message['accountcode']
data = {
'user_id': id,
'caller_id': event.message['CallerIDnum'],
'channel': event.message['Channel'],
'duration': event.message['Duration'],
'context': event.message['Context'],
'extension': event.message['Extension'],
'line': event.message['ConnectedLineNum'],
#'channel_state': event.message['ChannelState'],
'channel_state': event.message['ChannelStateDesc'],
}
user = System().getUserById(id)
if user:
profile = {
'firstname': user['firstname'],
'lastname': user['lastname']
'email': user['email']
}
else:
profile = {
'first_name': "No firstname",
'last_name': "No lastname"
}
data.update(profile)
g.channels.append(data)
if event.name == 'CoreShowChannelsComplete':
g.complete = True
if not event.name:
data = {
"connectivity":"Not connected",
"event-name":"No event name"
}
g.channels.append(data)
g.complete = True
@app.route('/incoming-calls')
def incoming_calls():
/**** I have already login and connect *****/
g.channels = []
g.complete = False
manager.register_event('*', fetch_events)
res = manager.send_action({'Action':'CoreShowChannels'})
try:
while not g.complete:
time.sleep(0.5)
manager.close()
return json.dumps(g.channels)
但是,當我嘗試在註冊handle_event方法後獲得傳入調用事件時,我得到一個空數組。看起來handle_event方法有問題,但我找不到它。
請Milorad,你能更好地向我解釋它在代碼中。我仍然不明白你。 – Oladapo
甚至我目前使用的CoreShowChannel也不會顯示任何活動的調用。 – Oladapo
我是檢查這樣的事件名稱 - >如果event.name =='Newexten',註冊併發送類似這樣的操作 - > manager.register_event('*',handle_event) res = manager.send_action({ Action':'Newevent'}) – Oladapo