信创录音盒二次开发事件说明

信创录音盒事件分为三大类,事件信息使用json格式

1. 设备状态

当设备有状态发生时触发

事件标记:"class":"account"

{
    /*表示当前事件的设备唯一序列号*/
    "account": "5990012",
    /*表示以下是设备信息发生改变的消息类别,固定account*/
    "class": "account",
    /*设备信息改变的详细信息*/
    "data": {
        /*设备信息,只在设备插入触发online时有设备信息*/
        "acc_info": {
            "acc_data": {
                /*设备序列号,等同前面的account*/
                "account": "5990014",
                "auth": false,
                "date": "2025-03-17",
                "dev_attr": {
                    "name": "agi-ub-box",
                    "nick": "agi-ub"
                },
                "func": 0,
                /*设备唯一id号*/
                "guid": "827237934d92c3d14e92eee902fec03e",
                /*内部使用,保留*/
                "module": 0,
                /*内部使用,保留*/
                "oemid": 0,
                /*设备序列号,等同前面的account*/
                "serial": "5990014",
                /*设备型号内部名称*/
                "type": "UB-C2P-NULL"
            },
            /*内部使用,保留*/
            "acc_status": {
                "free": "0",
                "ready": "0"
            },
            /*
            当前设备控制状态,设备在线后自动发送一次,每个状态名称对应api控制设备时的操作名称,查看api文档,或者本文档最后的控制名称定义
            */
            "do_ctrl": {
                "api_hook": 0,
                "dis_phone": 0,
                "hp_spk": 0,
                "led": 1,
                "line_to_hp_spk": 0,
                "line_to_sndcard_spk": 0,
                "loud_spk": 0,
                "mic_in": 0,
                "mic_to_line": 0,
                "phone_hook": 0,
                "play_to_hp_spk": 0,
                "play_to_line": 0,
                "ring_power": 0,
                "sndcard_mic_to_ub": 0
            }
        },
        /*
        表示设备状态改变的, evt_name表示具体事件名称
        "status": 设备的某些状态改变
        "phone":电话机摘挂机操作改变
        "do_ctrl":设备控制io状态改变
        "api":软摘机挂机状态改变
        "dial_step":拨出去的状态发生改变
        */
        "evt_name": "status",
        /*
        状态对应的信息名
        当evt_name是"status"时
        "online":设备在线
        "updated":设备信息改变了,一般是在线升级设备后改变
        "offline":设备掉线
        "free":设备空闲了,没有来电没有软摘机,没有电话摘机,空闲时不能立即软拨号,可能打不出去的,等待ready
        "ready":设备准备就绪,在free 等待2秒后触发,表示可以软件拨号出去了
        "busy":设备工作状态,有来电或者有软摘机或者电话摘机了
        "ring_on":来电响铃,叮叮叮正在响起来
        "ring_off":来电响铃静音状态
        "busy_tone":检测忙音信号,嘟...嘟...嘟, "count"表示次数
        "mic_in":话务盒麦克风插入了
        "mic_out":话务盒麦克风拔出了

        当evt_name是"phone"时
        "offhook":电话机摘机
        "hangup":电话机挂机
        "flash":电话机触发排插簧事件

        当evt_name是"do_ctrl"时
        读取 "ctrl_name" 字段名,字段名等同用api控制设备时的名称,查看文档最后
        Value:表示当前控制的值,一般时0或者1

        当evt_name是"dial_step"时
        读取
        "operator":"phone" 表示电话机操作拨号
        "operator":"api":表示软件操作拨号
        */
        "value": "online",
        /*当前允许的最大插入设备*/
        "max_ub_dev": 1,

        /*
        当evt_name是"dial_step"时
        "dial_dtmf" 表示二次发码,其它表示正常拨号呼出
        */
        "mode": "",
        /*
        当evt_name是"dial_step"时

        "step_name":"begin" 表示拨号准备开始了
        "step_name":"waittone" 摘机等待拨号音
        "step_name":"dialtone" 表示检测拨号音,准备发送号码
        "step_name":"timeout" 表示检测拨号音,准备强制发送号码
        "step_name":"dialing" 表示正在发送号码
        "step_name":"stop" 表示拨号被api终止了
        "step_name":"end" 表示拨号结束了
        */
        "step_name": null,
        /*当前插入的设备数量*/
        "ub_dev_num": 1
    },
    /*当前json使用的编码*/
    "encoding": "utf-8",
    /*信创助手内部标记,保留忽略*/
    "oid": {
        "aid": "8",
        "cid": "1",
        "eid": "8",
        "uid": "8"
    },
    /*事件发起模块,保留固定*/
    "source": "agi_ub_dev",
    /*事件触发的事件戳信息*/
    "time": {
        "datetime": "2025-03-17 08:30:07.255",
        "tick": "2490327817",
        "utc": "1742171407255"
    },
    /*事件格式版本,忽略*/
    "ver": "2.1.0"
}
        

2. 通话状态

来去电呼入呼出步骤

事件标记:"class":"dialog"

事件字段介绍:

{
    /*表示当前事件的设备唯一序列号*/
    "account": "5990012",
    /*表示以下是呼叫步骤产生的消息类别,固定dialog*/
    "class": "dialog",
    /*呼叫步骤记录详细信息*/
    "data": {
        /*呼叫信息*/
        "dialog": {
            /*和上一层account类似,表示当前产生通话记录的设备唯一序列号*/
            "account": "5990012",
            "area": {
                /*号码归宿地城市区号*/
                "area_id": "010",
                /*号码归宿地城市名*/
                "city": "北京",
                /*来电的主叫号码,去电被叫号码*/
                "code": "13810450502",
                /*号码归宿地省份名*/
                "province": "北京"
            },
            /*呼叫时使用"set_call_param"设置的自定义参数,适用对设备二次开发,没设置就为空*/
            "call_param": null,
            /*来去电号码详细信息*/
            "callid": {
                /*来去电的主被叫号码*/
                "code": "13810450502",
                /*实际呼出到电话线的号码,比如:有加上前缀0,出局号码9,或者17951代拨等*/
                "dst_to": "013810450502",
                /*去电拨号方式,保留,目前都是dtmf*/
                "type": "dtmf"
            },
            /*本次来去电通话的唯一id号,所有设备产生的都唯一不会重复*/
            "dialog_id": "1649095854923439684",
            /*来去呼叫方式,out去电,in表示来电*/
            "dialog_type": "in",
            "finished_reason": "",
            /*录音盒设备功能id,内部使用,对接开发可以忽略*/
            "func_id": 794,
            /*来去电操作时的设备,正常都是phone,内部使用,可以忽略*/
            "operator": "phone",
            /*录音文件信息*/
            "recfile": {
                "duration": 0
            },
            /*呼叫记录的时间戳信息*/
            "timestamp": {
                /*来去电接通时间信息,去电时不准,建议忽略,来电接听可使用*/
                "connected": {
                    /*接通时间戳,下面所有该字段名都一个意思*/
                    "datetime": "2025-03-05 09:08:10.621",
                    /*接通通话时长,单位是毫秒,下面所有该字段名都一个意思*/
                    "duration": "6047",
                    /*接通时的utc时间戳,下面所有该字段名都一个意思*/
                    "utc": "1741136890621",
                    /*接通时时间为周几,范围1-7,3表示周三,下面所有该字段名都一个意思*/
                    "week": "3"
                },
                /*连接时间信息,可以忽略,用在sip ippbx和软电话开发接口, 对模拟线路usb录音盒无效*/
                "connecting": {
                    "datetime": "",
                    "duration": "",
                    "utc": "0",
                    "week": ""
                },
                /*来去电开始时间 【来电时第一次响铃,去电时电话摘机或者软件拨号时间*/
                "create": {
                    /*同上*/
                    "datetime": "2025-03-05 09:08:07.686",
                    /*同上,单位是毫秒,无实际意义,可忽略*/
                    "duration": "2935",
                    /*同上*/
                    "utc": "1741136887686",
                    /*同上,表示周三*/
                    "week": "3"
                },
                /*保留,用在sip ippbx和软电话开发接口,对模拟线路usb录音盒无效*/
                "dohangup": {
                    /*同上*/
                    "datetime": "",
                    /*同上*/
                    "duration": "",
                    /*同上*/
                    "utc": "0",
                    /*同上*/
                    "week": ""
                },
                /*来去电结束时间,一般是本地电话机挂机时间,耳麦通话时本地软挂机时间*/
                "finished": {
                    /*同上*/
                    "datetime": "2025-03-05 09:08:16.668",
                    //同上,单位是毫秒,表示整个来去电时长
                    "duration": "8982",
                    /*同上*/
                    "utc": "1741136896668",
                    /*同上*/
                    "week": "3"
                },
                /*来电响铃时间,忽略不用考虑*/
                "ringing": {
                    /*同上*/
                    "datetime": "2025-03-05 09:08:10.621",
                    //同上,单位是毫秒,表示整个响铃时长,来电响铃开始到接听或者未接
                    "duration": "6047",
                    /*同上*/
                    "utc": "1741136890621",
                    /*同上*/
                    "week": "3"
                }
            }
        },
        /*
        通话信息状态标记
        Status:通话步骤, 具体step_name信息查看最后内容
        recfile:录音文件状态,step_name名信息:
          "start":表示录音开始
                  "stop":表示录音停止
                  "failed":表示录音失败
        playfile:播放文件状态,step_name名信息:
          "start":表示开始播放
                  "stop":表示停止播放
        "finished":表示播放内容结束
                  "failed":表示播放失败
        dtmf_char:收到一个DTMF按键,具体按键信息查看"dtmf" 字段
        dtmf_cmd:收到一串DTMF结束了,具体按键信息查看"dtmf" 字段
        dtmf_result:正在接收DTMF串信息,具体按键信息查看"dtmf" 字段
        asr_stream:通话中一句话转成文字信息,具体文字信息查看示例代码
        recfile_asr:通话结束后的录音文件转文字消息,具体文字信息查看示例代码
        */
        "evt_name": "status",
        /*通话步骤id数字,具体详细的数字代表的状态查看文档最后内容*/
        "step_id": 201,
        /*通话步骤字符串信息,具体详细的状态查看文档最后内容*/
        "step_name": "in_create"
    },
    /*当前json使用的编码*/
    "encoding": "utf-8",
    /*信创助手内部标记,保留忽略*/
    "oid": {
        "aid": "8",
        "cid": "1",
        "eid": "8",
        "uid": "8"
    },
    /*事件发起模块,保留固定*/
    "source": "agi_ub_dev",
    /*事件触发的事件戳信息*/
    "time": {
        /*utc时间对应的字符串时间*/
        "datetime": "2025-03-17 08:30:07.255",
        /*操作系统时钟*/
        "tick": "2490327817",
        /*utc时间*/
        "utc": "1742171407255"
    },
    /*事件格式版本,忽略*/
    "ver": "2.1.0"
}
        

3. 呼叫记录

通话结束后触发一次【来电未接,通话本地挂机后触发】

事件标记判断:"class":"calllog"

事件字段介绍:

{
    /*表示当前事件的设备唯一序列号*/
    "account": "5990012",
    /*表示以下是呼叫记录产生的消息类别,固定calllog*/
    "class": "calllog",
    /*通话记录详细数据*/
    "data": {
        /*和上一层account类似,表示当前产生通话记录的设备唯一序列号*/
        "account": "5990012",
        /*呼叫记录号码的归属地信息,如果来去电时有效手机号或者带区号的号码,就会提示地区信息*/
        "area": {
            /*号码归宿地城市区号*/
            "area_id": "010",
            /*号码归宿地城市名*/
            "city": "北京",
            /*来电的主叫号码,去电被叫号码*/
            "code": "13810450502",
            /*号码归宿地省份名*/
            "province": "北京"
        },
        /*呼叫时使用"set_call_param"设置的自定义参数,适用对设备二次开发,没设置就为空*/
        "call_param": null,
        /*来去电号码详细信息*/
        "callid": {
            /*来去电的主被叫号码*/
            "code": "13810450502",
            /*实际呼出到电话线的号码,比如:有加上前缀0,出局号码9,或者17951代拨等*/
            "dst_to": "013810450502",
            /*去电拨号方式,保留,目前都是dtmf*/
            "type": "dtmf"
        },
        /*接通方式,保留无效*/
        "connected_mode": "",
        /*本次来去电通话的唯一id号,所有设备产生的都唯一不会重复*/
        "dialog_id": "1649095850785361432",
        /*来去呼叫方式,out去电,in表示来电*/
        "dialog_type": "out",
        /*保留无效*/
        "evt_name": null,
        /*通话结束模式,phone_hangup:本地电话挂机,api_hangup:软件挂机, busy:检测到忙音挂机*/
        "finished_reason": "phone_hangup",
        /*录音盒设备功能id,内部使用,对接开发可以忽略*/
        "func_id": 794,
        /*来去电操作时的设备,正常都是phone,内部使用,可以忽略*/
        "operator": "phone",
        /*录音文件的参数信息*/
        "recfile": {
            /*录音文件时长,单位毫秒*/
            "duration": 7091,
            /*录音文件本地保存的完整路径*/
            "file": "F:/agicall/agi_ub/recfile/2025/03/05/090809_575_0001_805_out.mp3",
            /*录音文件本地保存的文件子目录*/
            "filename": "2025/03/05/090809_575_0001_805_out.mp3",
            /*录音文件本地保存的根路径*/
            "path": "F:/agicall/agi_ub/recfile/"
        },
        /*呼叫步骤名, 这里忽略,保留无效*/
        "step_name": null,
        /*呼叫记录的时间戳信息*/
        "timestamp": {
            /*来去电接通时间信息,去电时不准,建议忽略,来电接听可使用*/
            "connected": {
                /*接通时间戳,下面所有该字段名都一个意思*/
                "datetime": "2025-03-05 09:08:10.621",
                /*接通通话时长,单位是毫秒,下面所有该字段名都一个意思*/
                "duration": "6047",
                /*接通时的utc时间戳,下面所有该字段名都一个意思*/
                "utc": "1741136890621",
                /*接通时时间为周几,范围1-7,3表示周三,下面所有该字段名都一个意思*/
                "week": "3"
            },
            /*连接时间信息,可以忽略,用在sip ippbx和软电话开发接口, 对模拟线路usb录音盒无效*/
            "connecting": {
                "datetime": "",
                "duration": "",
                "utc": "0",
                "week": ""
            },
            /*来去电开始时间 【来电时第一次响铃,去电时电话摘机或者软件拨号时间*/
            "create": {
                /*同上*/
                "datetime": "2025-03-05 09:08:07.686",
                /*同上,单位是毫秒,无实际意义,可忽略*/
                "duration": "2935",
                /*同上*/
                "utc": "1741136887686",
                /*同上,表示周三*/
                "week": "3"
            },
            /*保留,用在sip ippbx和软电话开发接口,对模拟线路usb录音盒无效*/
            "dohangup": {
                /*同上*/
                "datetime": "",
                /*同上*/
                "duration": "",
                "utc": "0",
                "week": ""
            },
            /*来去电结束时间,一般是本地电话机挂机时间,耳麦通话时本地软挂机时间*/
            "finished": {
                /*同上*/
                "datetime": "2025-03-05 09:08:16.668",
                //同上,单位是毫秒,表示整个来去电时长
                "duration": "8982",
                /*同上*/
                "utc": "1741136896668",
                /*同上*/
                "week": "3"
            },
            /*来电响铃时间,忽略不用考虑*/
            "ringing": {
                /*同上*/
                "datetime": "2025-03-05 09:08:10.621",
                //同上,单位是毫秒,表示整个响铃时长,来电响铃开始到接听或者未接
                "duration": "6047",
                /*同上*/
                "utc": "1741136890621",
                /*同上*/
                "week": "3"
            }
        }
    },
    /*当前json使用的编码*/
    "encoding": "utf-8",
    /*信创助手内部标记,保留忽略*/
    "oid": {
        "aid": "8",
        "cid": "1",
        "eid": "8",
        "uid": "8"
    },
    /*事件发起模块,保留固定*/
    "source": "agi_ub_dev",
    /*事件触发的事件戳信息*/
    "time": {
        "datetime": "2025-03-17 08:30:07.255",
        "tick": "2490327817",
        "utc": "1742171407255"
    },
    /*事件格式版本,忽略*/
    "ver": "2.1.0"
}
        

通话数字id定义

宏定义名称 ID值 说明
UB_DIALOG_STEP_NULL0
UB_DIALOGOUT_STEP_BASE100保留
UB_DIALOGOUT_STEP_CREATE101创建新的呼叫
UB_DIALOGOUT_STEP_TRYING102对方已经接收到请求
UB_DIALOGOUT_STEP_INVITE103正在呼叫
UB_DIALOGOUT_STEP_RINGING104正在响铃
UB_DIALOGOUT_STEP_CONNECTING105正在连接
UB_DIALOGOUT_STEP_FAILED106呼叫失败
UB_DIALOGOUT_STEP_CONNECTED108接通
UB_DIALOGOUT_STEP_DOCANCEL110本地挂机取消呼叫
UB_DIALOGOUT_STEP_DOBYE111本地通话结束挂机
UB_DIALOGOUT_STEP_DOREFUSE112对方拒接
UB_DIALOGOUT_STEP_REMOTEHANG120对方挂机
UB_DIALOGOUT_STEP_FINISHED129错误或者结束
UB_DIALOGOUT_STEP_DELETE130释放呼叫通道内存
UB_DIALOGIN_STEP_BASE200保留
UB_DIALOGIN_STEP_CREATE201新的呼叫
UB_DIALOGIN_STEP_TRYING202已经接收到请求
UB_DIALOGIN_STEP_INVITE203正在呼叫
UB_DIALOGIN_STEP_RINGING204正在回铃
UB_DIALOGIN_STEP_CONNECTING205正在连接
UB_DIALOGIN_STEP_FAILED206呼叫失败
UB_DIALOGIN_STEP_CONNECTED208接通
UB_DIALOGIN_STEP_DOCANCEL210停止呼叫
UB_DIALOGIN_STEP_DOBYE211本地挂机
UB_DIALOGIN_STEP_DOREFUSE212本地拒接
UB_DIALOGIN_STEP_REMOTEHANG220对方挂机
UB_DIALOGIN_STEP_FINISHED229错误或者结束
UB_DIALOGIN_STEP_DELETE230释放呼叫通道内存

通话步骤字符定义

宏定义名称 字符值 说明
DIALOG_STEP_NAME_IN_CREATEin_create新的呼叫
DIALOG_STEP_NAME_IN_TRYINGin_trying已经接收到请求
DIALOG_STEP_NAME_IN_INVITEin_invite正在呼叫
DIALOG_STEP_NAME_IN_RINGINGin_ringing正在回铃
DIALOG_STEP_NAME_IN_CONNECTINGin_connecting正在连接
DIALOG_STEP_NAME_IN_FAILEDin_failed呼叫失败
DIALOG_STEP_NAME_IN_CONNECTEDin_connected接通
DIALOG_STEP_NAME_IN_DOCANCELin_docancel停止呼叫
DIALOG_STEP_NAME_IN_DOBYEin_dobye本地挂机
DIALOG_STEP_NAME_IN_DOREFUSEin_dorefuse本地拒接
DIALOG_STEP_NAME_IN_REMOTEHANGin_remotehang对方挂机
DIALOG_STEP_NAME_IN_FINISHEDin_finished错误或者结束
DIALOG_STEP_NAME_IN_DELETEin_delete释放呼叫通道内存
DIALOG_STEP_NAME_OUT_CREATEout_create创建新的呼叫
DIALOG_STEP_NAME_OUT_TRYINGout_trying对方已经接收到请求
DIALOG_STEP_NAME_OUT_INVITEout_invite正在呼叫
DIALOG_STEP_NAME_OUT_RINGINGout_ringing正在响铃
DIALOG_STEP_NAME_OUT_CONNECTINGout_connecting正在连接
DIALOG_STEP_NAME_OUT_FAILEDout_failed呼叫失败
DIALOG_STEP_NAME_OUT_CONNECTEDout_connected接通
DIALOG_STEP_NAME_OUT_DOCANCELout_docancel本地挂机取消呼叫
DIALOG_STEP_NAME_OUT_DOBYEout_dobye本地通话结束挂机
DIALOG_STEP_NAME_OUT_DOREFUSEout_dorefuse对方拒接
DIALOG_STEP_NAME_OUT_REMOTEHANGout_remotehang对方挂机
DIALOG_STEP_NAME_OUT_FINISHEDout_finished错误或者结束
DIALOG_STEP_NAME_OUT_DELETEout_delete释放呼叫通道内存

设备控制名定义

宏定义名称 控制名称 说明
AGI_UB_JSON_VALUE_WATCHDOGwatchdog设备看门狗,可以在调试设备时关闭看门狗,避免程序断点时设备复位
AGI_UB_JSON_VALUE_LEDled设备led指示灯
AGI_UB_JSON_VALUE_API_HOOKapi_hook设备模拟摘机
AGI_UB_JSON_VALUE_DIS_PHONEdis_phonephone口电话机断开line口,默认是连接到line口,只对XC_A1/XC_A2设备有效
AGI_UB_JSON_VALUE_RING_POWERring_power让phone口话机振铃
AGI_UB_JSON_VALUE_LOUD_SPKloud_spk喇叭.0->关闭 1->line_to 2->play_to
AGI_UB_JSON_VALUE_HP_SPKhp_spk耳机开关总使能,默认开启可以不操作
AGI_UB_JSON_VALUE_PLAY_TO_HP_SPKplay_to_hp_spk播放声音到设备耳机
AGI_UB_JSON_VALUE_PLAY_TO_LINEplay_to_line播放声音到电话线
AGI_UB_JSON_VALUE_LINE_TO_HP_SPKline_to_hp_spk电话线声音到设备耳机
AGI_UB_JSON_VALUE_LINE_TO_PHONE_SPKline_to_phone_spk电话线声音到phone口话机SPK,只对A1,A2有效
AGI_UB_JSON_VALUE_PHONE_MIC_TO_LINEphone_mic_to_linephone口话机mic到电话线,只对A1,A2有效
AGI_UB_JSON_VALUE_MIC_TO_LINEmic_to_line设备上自带的mic,不需要打开 播放声音到line
AGI_UB_JSON_VALUE_SNDCARD_MIC_TO_UBsndcard_mic_to_ub计算机声卡的mic声音到设备,需要打开播放声音到line的开关才能到达line线路
AGI_UB_JSON_VALUE_LINE_TO_SNDCARD_SPKline_to_sndcard_spk计算机声卡的mic
AGI_UB_JSON_VALUE_SNDCARD_MIC_AECsndcard_mic_aec启用mic的回音抵消算法,如果关闭就只有声卡自带回音抵消,如果是外放模式并且声卡没有回音抵消才启用
AGI_UB_JSON_VALUE_SENTENCE_VADsentence_vad开始关闭vad检测