【发布时间】:2015-05-24 07:55:49
【问题描述】:
我正在使用星号呼叫文件进行呼叫,我想在呼叫结束后向呼叫者发送消息,表明他已经呼叫了这么长时间。我编写了在挂断事件中发送消息的代码。现在我面临的问题是,当呼叫结束时,呼叫方和被呼叫方都会触发两次挂断事件,这会导致向呼叫者发送两条消息。任何人都可以提出任何想法,我该如何处理一旦代码被执行,它就不会再次执行相同的调用。
编辑 1: 以下是我希望避免在同一调用中执行两次的代码。
LogProperties.log.debug("[" + refID + "] Channel HUNGUP on id: " + channelID);
LogProperties.log.debug("Channel hungup on id: " + channelID);
Object channelObj = EventMonitor.requestsMap.get(channelID);
if (channelObj != null) {
ChargingTask activeTask = (ChargingTask) channelObj;
LogProperties.log.info("[" + refID + "] Cancelling changing task on channelID: " + channelID);
activeTask.cancel();
}
else {
String otherChannelID = (String) EventMonitor.linkedChannels.get(channelID);
LogProperties.log.info("[" + refID + "] Cannot Cancel changing task against channelID: " + channelID + ", Now looking for other linked channel, ID: " + otherChannelID);
channelObj = EventMonitor.requestsMap.get(otherChannelID);
if (channelObj != null) {
ChargingTask activeTask = (ChargingTask) channelObj;
LogProperties.log.info("[" + refID + "] Cancelling changing task for channelID: " + otherChannelID);
activeTask.cancel();
}
else{
LogProperties.log.error("[" + refID + "] Still cannot Cancel Charging Task");
}
}
Utilities.removeMemcachedEntry(channelID);
Utilities.ClearHashtables(channelID);
【问题讨论】:
标签: asterisk