“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的代码
loggedInUser = Skype("[email protected]", "password")
getinfo = SkypeChats(loggedInUser)
print(getinfo.recent())
输出的json中 Topic参数为创建的群聊名,可根据群聊名定位到群组Id,群组Id格式通常为:19:[email protected]
召唤BingChat
使用用skpy接入python后,能成功在python中发送消息到群聊之中。可是单单的在python中@NewBing 并不能成功唤醒NewBing。通过使用BurpSuite抓包发现,在每次@NewBing的时候都会出现下面一串
<at id=\"28:cf0e6215-34fe-409b-9e4b-135d7f3aa13b\">Bing</at>
尝试将这串代码放入到要发送的文本前就能@NewBing了。可是发送完消息怎么时时接受消息呢?因为BingChat 并不能在我们发送完消息之后就能立马回复,官方文档里给出的接受消息只能获取当前会话中的消息。我只能反反复复的翻找官方文档文档,终于功夫不负有心人,找到了SkypeNewMessageEvent与SkypeEditMessageEvent方法(这俩方法就在文档最底下部分,我眼瞎没注意到)。SkypeNewMessageEvent方法是监听并获取最新消息,SkypeEditMessageEvent则是监听获取修改后的消息。对没错!Skype能实时修改消息,当时我并没有使用SkypeEditMessageEvent方法,因为我测试的时候只是问了一些简单的问题,NewBing能一句话给出答案,所以我就没当回事。可是在经过多次测试后发现NewBing总是说话说一半就没了,这让我疑惑不已。突然意识到NewBing回答问题的时候会更正之前的回答,这让我的进度停滞不前。在我以为这事快黄的时候我突发现了SkypeEditMessageEvent,它能实时监听消息是否修改,并返回消息修改后的内容。
最后结果
简单加了点功能后最后得到
获取代码
github 使用它请帮忙点个小心心