Skype对话uri在卡片按钮中不起作用

时间:2019-08-22 12:32:21

标签: java botframework skype skype-bots microsoft-skype-bot

好吧,一开始我必须描述我想要实现的那种情况:

我实现了一个Skype机器人,该机器人将创建并通过按钮将会话链接作为基本卡发送给用户。我需要在用户的对话中创建邀请链接。该漫游器不必成为对话的参与者。

我为此写的东西:

BasicCard basicCard = new BasicCard()
        .withTitle("Title")
        .withButtons(Collections.singletonList(new CardAction()
                .withType(ActionTypes.OPEN_URL)
                .withTitle("Button text")
                .withValue("skype:28:long-id-separated-hyphen-bot;29:long-id-separated-hyphen-user1;29:long-id-separated-hyphen-user2?chat&topic=Conv%20Name")
        ));

Attachment attachment = new Attachment()
        .withContentType("application/vnd.microsoft.card.hero")
        .withContent(basicCard);

Activity activity = new Activity()
        .withType(ActivityTypes.MESSAGE)
        .withFrom(botAccount)
        .withRecipient(account1)
        .withAttachments(Collections.singletonList(attachment));

connector.get().conversations().sendToConversation("29:long-id-separated-hyphen-user1", activity);

并将其发送给user1,但链接无效。

我使用https://docs.microsoft.com/en-us/skype-sdk/skypeuris/skypeuriapireference,在此文档中,我只写了创建如下skype的链接:28:long-id-separated-hyphen-bot; 29:long-id-separated-hyphen-user1 ; 29:long-id-separated-hyphen-user2?chat&topic = Conv%20Name,但这不起作用。

可能是我不了解该链接在创建和添加用户到对话中时应该是什么样子。

如果我无法为邀请用户创建链接以进行对话,那么我该如何创建群组对话并邀请某些人加入该对话? (所有用户都与bot进行了对话,我知道他们的ID(29:long-id-separated-hyphen-user)和实时ID(8:user-id))

有人可以解释吗?

1 个答案:

答案 0 :(得分:0)

经过更多测试后,我发现Skype URI不支持多重聊天。即使他们这样做了,您仍在尝试使用Bot Framework中的ID,这是不兼容的。 Skype会从漫游器中隐藏用户的真实ID,因此无法将您拥有的ID交换为可用的ID。此外,Skype机器人已被弃用。我觉得您试图做的事是不可能的。

您可以使用UI创建一个链接以手动加入小组对话,但这似乎是唯一的方法。 Skype一直在严格限制其API,因此许多事情无法自动化。

This documentation似乎已过时。但是,您可以从警告中看到问题始终在Android上存在:

  

Android仅识别初始参与者;不支持多方聊天。

现在,Android行为在所有平台上似乎都是正确的。您可以通过在浏览器栏中输入Skype URI来进行测试。 skype:asdf?chatskype:asdf;qwer?chat都只会打开与asdf的对话。显然,在任何平台上都不支持通过URI进行多方聊天。