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

标签 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://learn.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))

谁能解释一下?

最佳答案

经过更多测试,我发现 Skype URI 不支持多人聊天。即使他们这样做了,您也在尝试使用 Bot Framework 中的 ID,这将是不兼容的。 Skype 向机器人隐藏了用户的真实 ID,因此无法将您拥有的 ID 换成可用的 ID。此外,Skype 机器人正在被弃用。我觉得您尝试做的事情是不可能的。

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

This documentation似乎已经过时了。但是,您可以在警告中看到该问题一直存在于 Android 上:

Android recognizes the initial participant only; multi chats are not supported.

Android 行为现在似乎适用于所有平台。您可以通过在浏览器栏中输入 Skype URI 来自行测试。 skype:asdf?chatskype:asdf;qwer?chat 都将打开仅与 asdf 的对话。显然,任何平台都不支持来自 URI 的多聊天。

关于java - Skype 对话 uri 在卡片按钮中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57609425/

相关文章:

node.js - 在 Facebook channel 上发送消息时无法添加换行符

skype - 使用 Skype For Web SDK 记录通话、消息和视频

java - 通过URL直接调用SKYPE API

java - 使用 GSON(或任何其他库)将 JSON 转换为 Java/Scala -> Bean 结构不清楚

c# - 路易斯在两个意图之间做出选择

java - 当两个值相等时如何返回 ArrayList 中的 max?

c# - 如何在 Microsoft Bot Framework 的 LuisDialog 中获取 LUIS 上下文 ID

java - 以编程方式从 Android 应用程序启动 Skype

java - 使用 Java 中的 HttpClient 连接到具有更改值的表单

java - 使用 @RunWith(PowerMockRunner.class) 时如何解决 java 单元测试中的链接错误