“Skype Ai”的诞生

“Skype Ai” 的诞生

一、前言

​ Microsoft 的 new Bing 由于不可描述原因，在大陆地区无法使用，刚开始还有修改 header 中的 X-Forwarder-For 进行绕过区域限制。可是没过多久也惨遭修复。于是有了此文

​

二、开始

Microsoft 将 NewBing 引入到 Skype 中。让用户可以在聊天中使用 NewBing 功能。New Bing 所调用的模型是 GPT4.0，所以我们这意味着我们可以在 skype 中可以白嫖 GPT4.0。遗憾的是 Skype 中与 NewBing 私聊仍然需要使用 “魔法” 才能使用

一旦施展魔法

不过在群聊中去 @NewBing 并不需要使用魔法。似乎让我们找到了突破口

可是在中国大陆，Skype 没用微信、qq 一样使用广泛。如果每次需要使用 Skype 中的 NewBing，岂不是每次都要打开 skype-> 打开群聊 -> 每次会话都要 @一下 NewBing？于是我决定使用 python 脚本去调用 Skype 中的 NewBing。刚开始的时候我是使用 python 爬虫去调用的。可是经过一番深入了解，发现 python 有个 skpy 库。整个代码我放 github 了，下面就只讲讲一些在我看来比较困难的问题。不想看下文的直接可以去我github

Python 接入 Skype 群聊

skpy 是使用 chats 接入群组会话，chats 需要群组 Id 作为参数，下面是获取群组 id 的代码

Copy
loggedInUser = Skype("user@mail.com", "password")
getinfo = SkypeChats(loggedInUser)
print(getinfo.recent())

输出的 json 中 Topic 参数为创建的群聊名，可根据群聊名定位到群组 Id，群组 Id 格式通常为：19:xxxxxxxxxxxxxxx@thread.skype

召唤 BingChat

使用用 skpy 接入 python 后，能成功在 python 中发送消息到群聊之中。可是单单的在 python 中 @NewBing 并不能成功唤醒 NewBing。通过使用 BurpSuite 抓包发现，在每次 @NewBing 的时候都会出现下面一串

Copy
<at id=\"28:cf0e6215-34fe-409b-9e4b-135d7f3aa13b\">Bing</at>

尝试将这串代码放入到要发送的文本前就能 @NewBing 了。可是发送完消息怎么时时接受消息呢？因为 BingChat 并不能在我们发送完消息之后就能立马回复，官方文档里给出的接受消息只能获取当前会话中的消息。我只能反反复复的翻找官方文档文档，终于功夫不负有心人，找到了 SkypeNewMessageEvent 与 SkypeEditMessageEvent 方法 (这俩方法就在文档最底下部分，我眼瞎没注意到)。SkypeNewMessageEvent 方法是监听并获取最新消息，SkypeEditMessageEvent 则是监听获取修改后的消息。对没错！Skype 能实时修改消息，当时我并没有使用 SkypeEditMessageEvent 方法，因为我测试的时候只是问了一些简单的问题，NewBing 能一句话给出答案，所以我就没当回事。可是在经过多次测试后发现 NewBing 总是说话说一半就没了，这让我疑惑不已。突然意识到 NewBing 回答问题的时候会更正之前的回答，这让我的进度停滞不前。在我以为这事快黄的时候我突发现了 SkypeEditMessageEvent，它能实时监听消息是否修改，并返回消息修改后的内容。

最后结果

简单加了点功能后最后得到

获取代码

github 使用它请帮忙点个小心心