前介
更多精彩文章,点这里
花了将近 2
天的时间,总算是把所有功能写完了,说实话,当时认为很简单,应该话费不了多长时间,但是最后发现越写逻辑越多。不过总算是完成了,看看最终的效果吧!
代码使用了,我开发的
Andorid
资源优化插件,非常好用,大家可以试试 安卓资源瘦身丶混淆丶去重插件。
确定目标
开始干活
当时定完目标,感觉难点都一一攻破了,没想到开发过程中这点逻辑还挺复杂的,接下来听我一一道来。
集成机器人
集成机器人方面,都是看阅读官方文档即可。
图灵机器人 没啥好说的就是一个简单的 Http
请求,我是使用 Retrofit + OkHttp3 + Kotlin协程
完成 Http
网络请求的(Retrofit 2.6.0
内置支持协程啦,可以和 RxJava
说拜拜了)。
/**
* 图灵机器人API
*/
object TuLingMsgRetrofit : BaseRtrofit("http://www.tuling123.com") {
val api = retrofit.create(TuLingMsgApi::class.java)
}
data class TuLingMsg(val key: String, val info: String)
interface TuLingMsgApi {
@POST("/openapi/api")
suspend fun getMsg(@Body msg: TuLingMsg): TuLingResult
}
第四范式客服机器人 和 图灵机器人 的实现方式不一样,它提供的方式本质是 WebSocket
。但是它设计上存在一个缺陷,就是机器反馈每条消息与我发送的消息没有一个一一对应关系。
举个例子,A
用户和 B
用户同时和我对话,我肯定只连接一个 WebSocket
,A
说 你好
,同时 B
说 在吗
,机器人回馈的 2
条结果,没法区分是给 A
还是 B
。
回头想想,可能 第四范式客服机器人 设计的 1
个连接,只能对应一个客户吧。
最终我也没有找到比较完美的解决办法,只能通过一个队列来管理消息回馈了(或多或少还是存在问题)。
/**
* 第四范式自动回复机器人
*/
object PDbootManager <