更新
我正在开发一个与 Bot Framework 进行 1:1 对话的 Skype 机器人。我有一个 WebHook 方法,该方法将从外部服务调用并向我的机器人发送消息,然后我的机器人将该消息发送给 Skype 用户。
以下代码适用于消息控制器中的 v1 以及 api/messages 发布方法
public async Task<Message> Post([FromBody]Message message){}
[Route("~/api/messages/hook")]
[HttpPost]
public async Task<IHttpActionResult> WebHook([FromBody]WebHookMessage message)
{
if (message.Type == "EmotionUpdate")
{
const string fromBotAddress = "<Skype Bot ID here>";
const string toBotAddress = "<Destination Skype name here>";
var text = resolveEmoji(message.Data);
using (var client = new ConnectorClient())
{
var outMessage = new Message
{
To = new ChannelAccount("skype", address: toBotAddress , isBot: false),
From = new ChannelAccount("skype", address: $"8:{fromBotAddress}", isBot: true),
Text = text,
Language = "en",
};
await client.Messages.SendMessageAsync(outMessage);
}
}
return Ok();
}
我将从另一个服务调用 WebHook 上方,以便我的机器人将消息发送给相应的 Skype 用户。
谁能帮助我如何在 V3 bot 框架中实现相同的目标?我尝试了以下但不工作
const string fromBotAddress = "Microsoft App ID of my bot";
const string toBotAddress = "skype username";
WebHookMessage processedData = JsonConvert.DeserializeObject<WebHookMessage>(message);
var text = resolveEmoji(processedData.Data);
using (var client = new ConnectorClient(new Uri("https://botname.azurewebsites.net/")
, "Bot Microsoft App Id", "Bot Microsoft App secret",null))
{
var outMessage = new Activity
{
ReplyToId = toBotAddress,
From = new ChannelAccount("skype", $"8:{fromBotAddress}"),
Text = text
};
await client.Conversations.SendToConversationAsync(outMessage);
}
但它不起作用,最后我想要实现的是我希望我的机器人随时向用户发送消息,我们将如何向 Skype 中的人发送消息。