如何在 GSM 网络上开始电话会议?

How can I start a conference call on GSM network?

我需要在 GSM 网络上进行电话会议。

我在datasheet上看到最多的是命令AT+CLCC可以在当前通话状态发生变化时自动上报ME的当前通话列表

如何使用 SIM800L 进行电话会议?我有 2 phone 个号码可以拨打。

您要求的功能的关键命令是 AT+CHLD (呼叫保持服务)。重要的是要说这是众所周知的 GSM 补充服务,并且由于 AT+CHLD 是标准命令,因此所有蜂窝调制解调器都可能支持该功能,不仅是SIM800.

任何用户必须知道的主要约束是:

  1. 这是一项与语音通话严格相关的服务
  2. 网络运营商也必须支持此服务

关于 multi-party 调用的 ETSI 规范

虽然它可能看起来是一个无聊的介绍,但我们需要在坚实的基础上构建我们的程序。如果您只对 AT 命令序列感兴趣,请随意跳过此段。

ETSI 规范 TS 127.007 v15.3.0 在第 7.13 章描述了它的行为:"Call related supplementary services +CHLD":

This command allows the control of the following call related services:

  • a call can be temporarily disconnected from the MT but the connection is retained by the network;
  • multiparty conversation (conference calls);
  • the served subscriber who has two calls (one held and the other either active or alerting) can connect the other parties and release the served subscriber's own connection.

然后引用了与 MPTY 调用相关的进一步文档:3GPP TS 22.084(可以找到here. Another interesting source is ETSI 300 954,其中指出

The served mobile subscriber A may initiate an active MultiParty call from an active call C and a held call B.

这意味着我们可以通过将保持呼叫添加到活动呼叫中来获得电话会议


AT 命令程序

从前面的文档我们可以推断出以下步骤将设置一个 multi-party 调用:

  1. 通过发出 ATD<number>; 开始与其中一方的语音通话,或使用 ATA
  2. 接听来电
  3. 通过 SIM800 发出 AT+CHLD=2well supported+CHLD=2 状态 "Place all active calls on hold (if any) and accept the other (held or waiting) call.").
  4. 开始与第三方通话
  5. 通过发出 AT+CHLD=3 启动多方(您的 SIM800 很好地支持,对于 +CHLD=3 状态 "adds an held call to the conversation." ).

关于AT+CLCC

你在问题中提到的命令并不直接负责启动多方对话,但它与它有某种关系。事实上,它能够列出所有活动呼叫的状态。

执行命令AT+CLCC提供以下答案:

[+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,<number>,<type >,<alphaID>]
[<CR><LF>+CLCC: <id2>,<dir>,<stat>,<mode>,<mpty>[,<number>,<type>,<alphaID>]
[...]]]
OK 

我们只关注两个相关参数:

  1. 是第 Nth 调用的 ID。这是相关的,因为 +CHLD 命令的许多选项允许 selective hold/release X 调用,并且需要此 ID 才能在命令中指定 X。 所有这些选项(未在此答案中提及)可用于 select 正确地将呼叫添加到多方对话中
  2. 多方通话标志,设置为1表示多方通话(会议)呼叫方。