熊的问答机——一个附带翻译和聊天功能的微信公众号

1.简介

有时候突然想不起一个单词的意思,又不想打开笨重的翻译APP,怎么办?如果可以微信问问朋友,而且这个朋友一直在线,那该多好!这时,就可以求助于这个小玩意了。它自动把发来的内容做中英互译,然后将结果发回给用户,可以实现单词和句子的翻译。有兴趣的话,可以尝试一下,下面是该公众号的二维码,扫码可关注:

微信着凭借腾讯庞大的用户网络以及强大的约炮功能,战胜众多聊天工具,成功坐拥数亿用户。最近腾讯一项重大动作就是开启了公共平台,众多明星以及公司都开始借助公共平台来进行营销。为了方便第三方应用,腾讯为公众号提供了第三方消息借口,可以把用户消息转发给服务提供者,这是一个挺有趣的功能。我就用这玩意做了个带自动翻译功能的微信号。此外,这个号的后台还连接了一个聊天机器人,但是因为现在暂时只支持英文聊天人人小黄鸡用的免费simisimi接口被封了我会乱说?,所以暂时还没有开放。

2.原理

其实原理很简单,只需要在新浪云平台上运行一个应用,把应用的地址提交腾讯,微信公共平台在简单验证后,会把该网址和消息绑定。以后用户给该微信公众号发消息后,平台会把该消息和发送人、时间、签名等信息生成一个XML报文,对绑定的网址做请求,XML会附在请求的URL里面。关于这个接口的验证和收发编码的编程,腾讯有一个比较详细的实例程序。云端应用的任务就是解析这个XML,然后提取消息内容,然后把查询的单词或者句子提交给翻译API,把翻译器返回的结果生成报文返回给平台,变成微信发给用户。这里平台和云端应用起到了中转的作用。

目前翻译的API使用的是有道提供的开放API,也是web service形式的。非常易用,为了方便查询,我做了一个接口的封装类,代码如下从来没用过php,渣代码求勿笑:

<?php
class youdaoAPI {

    public function getTrans($requestContent) {

        $requestContent = urlencode ( $requestContent );
        $key = yourkey;
        $keyfrom = yourkeyfrom;
        $doctype = "json";
        $requestURL = 'http://fanyi.youdao.com/openapi.do?keyfrom=' . $keyfrom . '&key=' . $key . '&type=data&doctype=json&version=1.1&q=';

        $request = $requestURL . $requestContent;
        //echo $request;
        $response = @file_get_contents ( $request );
        //echo $response;
        $responseObj = json_decode ( $response, true );
        $errorCode = $responseObj ['errorCode'];

        if (isset ( $errorCode )) {
            switch ($errorCode) {
                case 0 :
                    $returnStr = $this->getRst ( $responseObj );
                    //echo $returnStr;
                    break;
                case 20 :
                    $returnStr = "输入太长";
                    break;
                case 30 :
                    $returnStr = '无法有效翻译';
                    break;
                case 40 :
                    $returnStr = '不支持的语言';
                    break;
                case 50 :
                    $returnStr = 'API接口密钥失效,请联系管理员!';
                    break;
                default :
                    $returnStr = "出现异常,请联系管理员";
            }
        }
        return $returnStr;
    }
    private function getRst($responseObj) {
        $query = $responseObj ['query'];
        $trans = $responseObj ['translation'];
        $dic_rst = $responseObj ['basic'];
        if (isset ( $dic_rst )) {
            $phonetic = $dic_rst ['phonetic'];
            $exp = $dic_rst ['explains'];
            //echo $exp;
            $nExp = count ( $exp );
            //echo $nExp;
            $i = 1;
            foreach ( $exp as $value ) {
                $subExp = $subExp . $i . '. ' . $value . ' ; ';
                $i ++;
            }
            $basicStr = '音标-' . $phonetic . '; 释义-' . $subExp;
            //echo $basicStr;
            $rst = '翻译单词-"' . $query . '": ' . $basicStr;
        } else {
            $rst = '翻译短句-"' . $query . '":' . $trans ['0'] . '.';
        }
        return $rst;
    }
}
?>

P.S 里面需要一个Key用来请求有道的API,这个去有道的网站申请一个就是了。另外就是查询中文需要使用UTF先编码后再贴在请求上。

3. 其他

现在疼讯的消息接口支持发送文本消息和地理位置,回复支持文本和图文。可以做一个天气查询以及基于图片的应用,暂时还没有什么有意思的想法,想到了再说。 还有,用这个来翻译感觉挺方便的, 关键是快。

截屏一个

就这样吧,嗯。