当您使用语音的API接口发送外呼后,可以通过使用MNS的Queue模型来接收语音的回执消息。

消息的订阅

云通信的所有业务消息都用过MNS消息服务向外发送。用户每订阅一个类别的消息(比如语音呼叫消息VoiceReport),系统都会为用户分配一个独立的消息队列。用户可以通过阿里云账号拿到一个临时的token用于获取队列中的消息。用户可以下载demo,编写简单的消息处理类即可完成消息处理的任务。在页面上订阅消息,订阅完消息后,能拿到消息队列名称(queueName)。比如:Alicom-Queue-xxxxxx-VoiceReport 。队列名字每个用户都不同。

消息类型

语音提供一种消息类型,呼叫记录消息(VoiceReport)

语音呼叫记录消息VoiceReport消息体格式

名称 类型 描述 示例 是否必须
call_id String 呼叫ID。 100001616500^100001871490 必须
start_time String 通话开始时间,未接通则为空。 2017-06-01 10:00:00 可选
end_time String 通话结束时间,未接通则为空。 2017-06-01 10:00:00 可选
duration String 通话时长,未接通为0。 10 可选
status_code String 呼叫结果状态码。 200010 必须
status_msg String 结果描述。 执行完成 可选
out_id String 扩展字段回传,将调用API时传入的字段返回。 123456 可选
dtmf String DTMF按键。 123456 可选

技术对接步骤

下载消息SDK

下载对应语音的消息DEMO工程,工程所需要的所有依赖php包都放在DEMO工程的录下,将对于的php包引入到您的工程当中既可按照DEMO样例编写接收消息的程序。

SDK&DEMO下载地址,请参见SDK&DEMO下载

编写样例程序

// 代码节选,详见aliyun-dyvms-php-sdk/msg_demo/MsgDemo.php

...

echo "消息接口查阅语音状态报告返回结果:\n";
MsgDemo::receiveMsg(
    // 消息类型, VoiceReport: 语音状态报告
    "VoiceReport",

    // 在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName
    "Alicom-Queue-xxxxxxxx-VoiceReport",

    /**
     * 回调
     * @param stdClass $message 消息数据
     * @return bool 返回true,则工具类自动删除已拉取的消息。返回false,消息不删除可以下次获取
     */
    function ($message) {
        print_r($message);
        return false;
    }
);