虽然sophia对微信公众平台的各种api都有良好的支持,比如文本回复、菜单事件、图片信息、订阅、退订等。
但处理特殊场景方面有些不足,比如高级api调用及异常情况处理。
有个客户提出希望在手机上(1)能够查看订阅者对服务号发送的信息,(2)并能通过手机回复(在线客服)。
目前,我了解到的情况是可以通过公众号助手群信息,这个可以不实现。
对于这种情况,sophia需要增加一些逻辑处理。如下:
1、高级api调用
服务号必须通过腾讯认证才能开通高级api,这个由客户自己去认证。有了调用高级api权限后,sophia需要提供如下能力:
a、获取token
b、缓存token
c、定时更新token
d、通用调用api接口封装
这些逻辑如何组织到相关类里?思考中....
2、异常情况处理
sophia有非常好的异常处理机制,对于订阅者回复的不是系统命令,则提醒订阅者查阅帮助。
这个跟上面的两点需求有什么关系呢?
因为系统的命令(智能回复功能)毕竟有限,而且有些订阅者不会使用,或者订阅者需要向公众号发起一个咨询(一段文字)时,sophia将认为它不是系统命令,见作为异常并提醒订阅者查阅帮助。
所以,需要对这类异常做两种处理:要么当异常(默认),要么将消息放到队列里等待客服介入,并提示订阅者等待客服介入。
因此,在sophia的抽象命令解析器里将加入这样的处理逻辑,命令解析器找不到命令后抛出异常,由消息处理器俘获,并将消息放到带处理池里。
最后,当sophia有了上面的逻辑后,很容易的实现客户要求的两点需求。仅需要一个ViewAndReplyMessagesCommand类。
此类将作为sophia的基本command,但不会想HelpCommand、NextCommand那样强制每个消息处理器必须有。
由客户决定。