通话语音¶
作者:闫国梁
最后更新时间:2020年7月7日
通话语音¶
对于只支持 4G 的 CAT1模块(Air720UG、Air724UG)而言,需要用本命令打开 VOLTE 功能才能进行语音通话。而 Air720UH 模块支持 4G 和 2G,而 2G 支持语音通话,所以不需要打开 VOLTE 就可以进行语音通话。 ## AT模式 ### 发起呼叫:ATD 执行命令,用于发出语音呼叫,呼叫号码长度不超过20位。 语法规则:
命 令 类 型 |
语法 |
返回和说明 |
---|---|---|
执 行 命 令 |
ATD; |
命令成功,则返回:OK 如果 成功建立连接,则返回:CONNECT如果没检测到拨号音 dial tone(并且当 ATX2 or ATX4 时): NO DIALTONEIf busy(并且当 ATX3 or ATX4): BUSY通话被挂断或建立失败: NO CARRIER如果被叫无应答: NO ANSWER |
ATD |
数据呼叫成功,则返回: |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
呼叫号码 |
由以下字符组成:0-9, * , #, +, A, B, C 注:拨 112 可以建立紧急呼叫,不需要 SIM 卡。 |
举例:
命令(→) /返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+SE TVOLTE=1 |
打开VOLTE功能 |
← |
OK |
注:对于只支持4G的CAT1模块(Air720UG、 Air724UG)而言,需要用 AT+SETVOLTE=1 命令打开 VOLTE 功能才能进行语音通话。而 Air720UH 模块支持 4G 和 2G,所以不需要打开 VOLTE 就可以进行语音通 话 |
→ |
ATD1316 23***98; |
语音 呼叫号码13162398(是为了保护隐私, 将实际数字隐去,实际操作时要如实输入号码) |
← |
OK CONNECT |
对方接听电话 |
→ |
AT+CHUP |
模块主动挂断通话 |
← |
OK |
返回OK |
6.3接听来电:ATA 有只有一个来电(RING)时,输入该命令接听来电。当有更多的来电时,请使用 AT+CHLD命令接听新的来电。 语法规则:
命令类型 |
语法 |
返回和说明 |
---|---|---|
执行命令 |
ATA |
OK |
举例:
命令(→)/返回(←) |
实例 |
解释和说明 |
---|---|---|
←(URC) |
RING |
有RING上报,表示有来电。 注:RING 是一个URC命令(Unsolicited Result Code ) |
→ |
ATA |
模块接听来电 |
← |
OK |
返回OK,说明接听来电成功 |
挂断通话:ATH¶
通话过程中,输入执行命令会挂断所有电话,包括当前通话(active)、等待通话(waiting)和挂起通话(holding)。 语法规则:
命令类型 |
语法 |
返回和说明 |
---|---|---|
执行命令 |
ATH |
OK |
举例:
命令(→)/返回(←) |
实例 |
解释和说明 |
---|---|---|
←(URC) |
RING |
有RING上报,表示有来电。 |
→ |
ATA |
模块接听来电 |
← |
OK |
建立通话 |
→ |
ATH |
挂断通话 |
← |
OK |
OK |
挂断通话:AT+CHUP¶
通话过程中,输入执行命令会挂断所有电话,包括当前通话(active)、等待通话(waiting)和挂起通话(holding)。 作用与 ATH 相同。 语法规则:
命令类型 |
语法 |
返回和说明 |
---|---|---|
执行命令 |
AT+CHUP |
OK |
列出所有当前的呼叫:AT+CLCC¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
| 执行命令 | AT+CLCC | [+CLCC:,
,,,[,,[,]][+CLCC:,
,,,[,,[,]][…]]] | | 测试命令 | AT+CLCC=? | OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
呼叫识别 id |
整数型;请参考3GPP TS22.030中第 4.5.5.1 节中描述,此参数可在+CHLD命令中被使用 |
|
举例:
命令(→)/返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
ATD10086; |
语音呼叫号码10086 |
← |
OK |
|
→ |
AT+CLCC |
对方接听 电话前查询下通话情况 |
← |
+CLCC: 1,0, 2,0,0,“10086”,129,”” OK |
=2 表示 拨号中,对方尚未接听 |
← |
CONNECT |
对方接听 |
→ |
AT+CLCC |
此时再查询下通话状态 |
← |
+CLCC: 1,0, 0,0,0,“10086”,129,”” |
= 0 表 示电话接通并保持激活 |
OK |
||
→ |
AT+CHUP |
挂电话 |
← |
OK |
|
→ |
AT+CLCC |
显示通话状态 |
← |
OK |
只有 一个OK,表示没有通话 |
呼叫保持和多方通话:AT+CHLD¶
使用该指令,可以控制 TA的附加业务:呼叫保持和多方通话。呼叫能被保持,恢复,释放和加入多方通话。
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CHLD= |
OK |
测试命令 |
AT+CHLD=? |
+CHLD: (取值列表) OK |
语法规则:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
整数型 |
0 |
释放所有已保持的呼叫或者 为等待中的呼叫设置用户决定用户忙(UDUB)条件 |
|
1 |
如果存在当前呼叫,释放所有 当前呼叫并接听另外一个已保持或等待中的呼叫 |
||
1X |
释放当前某一特定的呼叫X |
||
2 |
如果存在当前呼叫,保持所有 当前呼叫并接听另外一个已保持或等待中的呼叫 |
||
2X |
保持除呼叫 X 外的所有当前呼叫 |
||
3 |
将一个被保持(held)的通话 加入到活跃(active)通话中(建立多方通话) |
举例:
命令 (→)/ 返 回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CCWA=1,1 |
|
← |
OK |
|
→ |
ATD137******98; |
呼叫137******98 |
← |
OK |
|
← (URC) |
CONNECT |
对方 接听,通话建立,双方通话中 |
← (URC) |
+CCWA: “13601*****97”,129,1 |
有又一个电 话进来,此时会有如此URC上报 |
→ |
AT+CHLD=2 |
HOLD第一 路(+CLCC中id=1),接通第二路 (+CLCC中id=2) |
← |
OK |
|
→ |
AT+CLCC |
查询下当前所有当前通话 |
← |
+CLCC: 1,0,1,0,0,“137******98”,129 +CLCC: 2,1,0,0, 0,“13601*****97”,128,“TEST” OK |
第一路 第三个参数即=1,表示被保持 第二路=0,表示正处激活状态 |
→ |
AT+CHLD=21 |
切回到第一路 |
← |
OK |
|
→ |
AT+CHLD=3 |
建立三方通话(前 提为:SIM卡已经开通此功能) |
← |
OK |
|
→ |
AT+CHLD=11 |
释放第一路 |
← |
OK |
产生 DTMF 音:AT+VTS¶
DTMF(Double Tone Multiple Frequency,双音多频),用来在电话建立以后拨打分机号码或自动语音服务。 语法规则:
命令类型 |
语法 |
返回和说明 |
---|---|---|
设置命令 |
AT+VTS=或 AT+VTS=[,] |
OK |
测试命令 |
AT+VTS=? |
+VTS:(取值列表),(取值列表) OK |
参数定义:
参数 |
定义 |
取 | 对取值的说明 值 | |
|
---|---|---|---|
单个 DTMF |
单个 ASCII 字符,不需要双引号””。范围如下 0-9, #,*, A-D。DTMF 持续时间定义如下: 如果AT+VTS=,则持续时间通过命令+VTD 来设置;如果AT+VTS=,,则持续时间通过定义 |
||
持续 时间 |
1 0 |
tone 的持续时间,以1/10 秒为单位 |
举例:
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+VTS=? |
|
← |
+VTS: (0-9 ,*,#,A,B,C,D),(1-10) OK |
|
以下的例子 是拨打总机接通后,再 用DTMF拨打分机109: |
||
→ |
ATD10086; |
拨打10086 |
← |
OK CONNECT |
接通 |
→ |
AT+VTS=2 |
选择自 动语音服务中的2服务 |
← |
OK |
DTMF TONE 周期:AT+VTD¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+VTD= |
OK |
查询命令 |
AT+VTD? |
+VTD: OK |
测试命令 |
AT+VTD=? |
|
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
Tone的长度 |
1~10 |
以1/10 秒为单位的tone 持续时间 |
LUAT模式¶
模块功能:通话管理 ### cc.anyCallExist()¶ 是否存在通话
参数
无
返回值
bool result 存在通话返回true,否则返回false
例子
result = cc.anyCallExist()
cc.getState(num)¶¶
查询某个号码的通话状态
参数 | 传入值类型 | 释义 | | — | — | | string | num 查询号码 |
返回值
number state 通话状态,状态值参考本模块Fields定义
例子
state = cc.getState('10086')
cc.dial(num, delay)¶¶
呼出电话
参数 | 传入值类型 | 释义 | | — | — | | string | num 呼出号码 | | number | 可选参数,默认为``0``,delay 延时delay毫秒后,才发起呼叫 |
返回值
bool result,true表示允许发送at命令拨号并且发送at,false表示不允许at命令拨号
例子
cc.dial('10086')
cc.hangUp(num)¶¶
挂断通话
参数 | 传入值类型 | 释义 | | — | — | | string | num 号码,若指定号码通话状态不对 则直接退出 不会执行挂断,若挂断时会挂断所有电话 |
返回值
nil
例子
cc.hangUp('10086')
cc.accept(num)¶¶
接听电话
参数 | 传入值类型 | 释义 | | — | — | | string | num 号码,若指定号码通话状态不对 则直接退出 不会接通 |
返回值
nil
例子
cc.accept('10086')
cc.transVoice(data, loop, downLinkPlay)¶¶
通话中发送声音到对端,必须是12.2K AMR格式
参数 | 传入值类型 | 释义 | | — | — | | string | data 12.2K AMR格式的数据 | | bool | 可选参数,默认为``nil``,loop 是否循环发送,true为循环,其余为不循环 | | bool | 可选参数,默认为``nil``,downLinkPlay 声音是否在本端播放,true为播放,其余为不播放 |
返回值
bool result true为成功,false为失败
例子
cc.transVoice("#!AMR\010\060*********")
cc.transVoice("#!AMR\010\060*********",true)
cc.transVoice("#!AMR\010\060*********",true,true)
cc.dtmfDetect(enable, sens)¶¶
设置dtmf检测是否使能以及灵敏度
参数 | 传入值类型 | 释义 | | — | — | | bool | 可选参数,默认为``nil``,enable true使能,false或者nil为不使能 | | number | 可选参数,默认为``3``,sens 灵敏度,最灵敏为1 |
返回值
nil
例子
cc.dtmfDetect(true)