我想知道爲每個CHANNEL_EXECUTE事件觸發ExecuteApplication調用。在託管ESL的ExecuteAsync方法中,沒有支持這一點的參數。簽名是:如何設置從ESL執行的應用程序的應用程序UUID
public ESLevent ExecuteAsync(string app, string arg, string uuid)
當一個應用程序啓動這個ExecuteAsync FreeSWITCH中產生的UUID的應用程序,這將在隨後的所有CHANNEL_EXECUTE事件的應用程序UUID頭域presen't。問題是ExecuteAsynch調用不會返回此UUID。如果有多個正在運行的應用程序,這就很難跟蹤CHANNEL_EXECUTE事件。通過ExecuteAsynch返回的事件具有以下形式(無UUID存在):
{
"Event-Name": "SOCKET_DATA",
"Content-Type": "command/reply",
"Reply-Text": "+OK"
}
例如API調用執行與Bgapi支持這將是工作-UUID頭字段的用於相關BACKGROUND_JOB的值的job_uuid參數事件。
public ESLevent Bgapi(string cmd, string arg, string job_uuid)
如何同爲撥號方案的應用,如播放實現?
我檢查,如果可能它是由託管包裝隱蔽,但在esl.c(至極用於由包裝的ExecuteAsync法)esl_execute功能似乎不支持此兩種:
ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, const char *arg, const char *uuid)