首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置从ESL执行的应用程序的UUID

如何设置从ESL执行的应用程序的UUID
EN

Stack Overflow用户
提问于 2017-04-06 10:59:23
回答 1查看 471关注 0票数 0

我想知道每个ExecuteApplication事件的触发CHANNEL_EXECUTE调用。在托管ESL的ExecuteAsync方法中,没有支持这一点的参数。签名是:

代码语言:javascript
复制
public ESLevent ExecuteAsync(string app, string arg, string uuid)

使用此ExecuteAsync启动应用程序时,FreeSwitch将为应用程序生成一个UUID,这将不会出现在随后的CHANNEL_EXECUTE事件的application标头字段中。问题是ExecuteAsynch调用不返回这个UUID。如果有多个正在运行的应用程序,就很难跟踪CHANNEL_EXECUTE事件。ExecuteAsynch返回的事件具有以下形式(不存在UUID ):

代码语言:javascript
复制
{  
    "Event-Name": "SOCKET_DATA",
    "Content-Type": "command/reply",
    "Reply-Text": "+OK"
}

例如,使用Bgapi执行API调用支持一个job_uuid参数,该参数将是相关BACKGROUND_JOB事件的job_uuid标头字段的值。

代码语言:javascript
复制
 public ESLevent Bgapi(string cmd, string arg, string job_uuid)

如何实现同样的拨号计划应用程序,如回放?

我检查了托管包装器是否隐藏了它,但是esl.c中的esl_execute函数(wich由包装器的ExecuteAsync方法使用)似乎也不支持这一点:

代码语言:javascript
复制
ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, const char *arg, const char *uuid)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-17 03:16:04

根据发送文件gEvent-UUID头值就是为此目的而设计的。API中的esl_execute函数使用esl_send_recv发送自组成的sendmsg消息,但不幸的是它没有提供设置该字段的方法。其中一种方法是编写一个类似的sendmsg消息,其中包含Event-UUID字段并通过esl_send_recv发送。

例如,在托管ESL中:

代码语言:javascript
复制
public void ExecuteApplication(ESLconnection conn, string application, string appParams, string uiid, string jobid)
{
    var header = new Dictionary<string, string>
    {
        {"call-command", "execute"},
        {"execute-app-name", application },
        {"execute-app-arg", appParams },
        {"loops", "1" },
        {"Event-UUID", jobid },
    };
    string newLine = "\n";
    var cmd = $"sendmsg {uiid}{newLine}" + string.Join(newLine, header.Select(kvp => $"{kvp.Key}: {kvp.Value}"));
    var e = conn.SendRecv(cmd);
    ...
}

因此,要发送的消息将具有以下形式:

代码语言:javascript
复制
sendmsg bb2652fa-467c-44a1-a2f0-0f5e4363e2f3
call-command: execute
execute-app-name: playback
execute-app-arg: d:\vox\sample.vox
loops: 1
Event-UUID: play command id 369
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43253217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档