如何使用JavaScript SDK在Azure通信服务中发起群组通话并获取群组ID
问题根因
调用CallClient.startCall时如果没有显式传入群组ID参数,默认发起的是点对点通话,这类通话不存在可供外部用户加入的固定群组标识,因此访问Call.info.groupId会返回空值。哪怕点对点通话后续添加参会人升级为多人通话,也不会自动生成可复用的公开群组ID,不支持外部用户主动加入。
可加入群组通话的正确发起方式
- 群组ID不需要ACS服务端提前分配,你可以自行生成符合标准UUID v4格式的字符串作为群组ID,只要格式合法即可生效。
- 调用
startCall时必须在配置参数中显式传入groupId字段,赋值为你提前生成的UUID,此时发起的才是标准群组通话。 - 发起成功后,
Call.info.groupId会返回你传入的UUID值,其他用户拿到这个ID后,就可以通过joinCall方法传入该ID加入通话。
代码参考
import { CallClient } from '@azure/communication-calling'; // 生成合法UUID作为群组ID const targetGroupId = crypto.randomUUID(); const callClient = new CallClient(); const callAgent = await callClient.createCallAgent(userCredential); // 发起群组通话,显式传入groupId const groupCall = await callAgent.startCall( [initialParticipant1, initialParticipant2], { groupId: targetGroupId } ); // 其他用户加入同个群组的调用方式 const joinConfig = { groupId: targetGroupId }; const joinedCall = await callAgent.join(joinConfig);
注意:如果你需要支持用户通过ID主动加入通话,必须在最开始发起通话时就传入自定义的合法UUID作为groupId,通话发起后再补传参数不会把点对点通话转换为可加入的群组通话。
内容的提问来源于stack exchange,提问作者muremwa
相关产品推荐
相关产品推荐

