我正在尝试遵循两个教程,两个教程都有效,但我的用例仍然出现错误。
第一个似乎正在工作,我正在使用我的[电子邮件受保护]登录,并获得了令牌: (guid 53b----b70是我在租户中的用户ID))
{
"skypeid": "orgid:53b*****-****-****-****-*********b70",
"scp": 1024,
"csi": "1715345005",
"exp": 1715349008,
"rgn": "emea",
"tid": "937*****-****-****-****-*********7d1",
"acsScope": "voip,chat",
"resourceId": "871*****-****-****-****-*********86d",
"aad_iat": "1715345005",
"aad_uti": "E4*****************oAA",
"aad_appid": "1fd5118e-2576-4263-8130-9503064c837a",// ACS Service Principal
"iat": 1715345305
}
第二个也可以工作,如果我正在使用从 Azure 门户上配置的通信服务页面生成的(未经验证的用户)身份和访问令牌值。
问题:
如果我尝试使用第二个教程中的应用程序以团队用户身份加入会议([电子邮件受保护]),并尝试使用身份 53b-- --b70,并且从上面第一个教程成功生成令牌,我收到错误消息:
CallError:CallClient.createCallAgent:只能创建CallAgent 带有 ACS 代币
错误消息提示我的门户生成的令牌下面有一个以 acs: 开头的“skypeid”,但不起作用的我的 Teams 用户令牌的 skypeid 以 orgid: 开头?但如何为我的 Teams 用户获取这样的令牌?
// portal generated token which is working, skypid starts with acs,
// and in form of acs:{resourceId}_{randomuser-id}.
// According to portal generated Identitiy which is the same with 8: prefix
{
"skypeid": "acs:871*****-****-****-****-*********86d_000*****-****-****-****-*********fc1",
"scp": 1792,
"csi": "1715344681",
"exp": 1715431081,
"rgn": "emea",
"acsScope": "chat,voip",
"resourceId": "871*****-****-****-****-*********86d",
"resourceLocation": "europe",
"iat": 1715344681
}
根据此changelog,您必须使用TeamsCallAgent而不是CallAgent。
const userToken = '<ACCESS_TOKEN_FOR_MICROSOFT_365_IDENTITY>';
callClient = new CallClient();
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const teamsCallAgent = await callClient.createTeamsCallAgent(tokenCredential);