php专区

 首页 > php专区 > PHP应用 > 开放平台 > 方倍微信公众平台消息接口开发(3)中英翻译数据接口json数据格式举例

方倍微信公众平台消息接口开发(3)中英翻译数据接口json数据格式举例

分享到:
【字体:
导读:
          要做一个翻译账号,有以下几步:一 有翻译接口:目前有道词典提供了翻译接口,申请地址http: fanyi youdao com openapi?path=data-mode下面是申请介绍:申请完成后,会收到邮件,邮件中有api...

要做一个翻译账号,有以下几步:

一. 有翻译接口:

目前有道词典提供了翻译接口,申请地址 http://fanyi.youdao.com/openapi?path=data-mode

下面是申请介绍:

申请完成后,会收到邮件,邮件中有api key:

数据接口

http://fanyi.youdao.com/openapi.do?keyfrom=&key=&type=data&doctype=&version=1.1&q=要翻译的文本

版本:1.1,请求方式:get,编码方式:utf-8

主要功能:中英互译,同时获得有道翻译结果和有道词典结果(可能没有)

参数说明:

 type - 返回结果的类型,固定为data
 doctype - 返回结果的数据格式,xml或json或jsonp
 version - 版本,当前最新版本为1.1
 q - 要翻译的文本,必须是UTF-8编码,字符长度不能超过200个字符,需要进行urlencode编码
errorCode:
 0 - 正常
 20 - 要翻译的文本过长
 30 - 无法进行有效的翻译
 40 - 不支持的语言类型
 50 - 无效的key

 

json数据格式举例

http://fanyi.youdao.com/openapi.do?keyfrom=&key=

&type=data&doctype=json&version=1.1&q=good

{
    "errorCode":0
    "query":"good",
    "translation":["好"], // 有道翻译
    "basic":{ // 有道词典-基本词典
        "phonetic":"g?d"
        "uk-phonetic":"g?d" //英式发音
        "us-phonetic":"ɡ?d" //美式发音
        "explains":[
            "好处",
            "好的"
            "好"
        ]
    },
    "web":[ // 有道词典-网络释义
        {
            "key":"good",
            "value":["良好","善","美好"]
        },
        {...}
    ]
}

 

 

二 程序实现:

有道翻译的源码:需要自己申请key,然后填入

 

 

微信调用

define("TOKEN", "qq612312312312");

            
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();

class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        //valid signature , option
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    public function responseMsg()
    {
        //get post data, May be due to the different environments
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        logger("R ".$postStr);
        //extract post data
        if (!empty($postStr)){
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $RX_TYPE = trim($postObj->MsgType);

            switch ($RX_TYPE)
            {
                case "text":
                    $resultStr = $this->receiveText($postObj);
                    break;
                case "event":
                    $resultStr = $this->receiveEvent($postObj);
                    break;
                default:
                    $resultStr = "unknow msg type: ".$RX_TYPE;
                    break;
            }
            logger("T ".$resultStr);
            echo $resultStr;
        }else {
            echo "";
            exit;
        }
    }

    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }

    private function receiveText($object)
    {
        $funcFlag = 0;
        $keyword = trim($object->Content);
        $resultStr = "";
        $cityArray = array();
        $contentStr = "";
        $needArray = false;
        $illegal = false;
        $saytome = false;
        
        if (1 == 1){
            $contentStr = translate($keyword);
            $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
            return $resultStr;
        }
        //Content 消息内容,大小限制在2048字节,字段为空为不合法请求
        return $resultStr;
    }
    
    private function receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr = "请直说,我将为你自动翻译";
                break;
            case "unsubscribe":
                $contentStr = "";
                break;
            case "CLICK":
                switch ($object->EventKey)
                {
                    default:
                        $contentStr = "receive a eventkey: ".$object->EventKey;
                        break;
                }
                break;
            default:
                $contentStr = "receive a new event: ".$object->Event;
                break;
        }
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }
    
    private function transmitText($object, $content, $flag = 0)
    {
        $textTpl = "


%s


%d
";
        $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
        return $resultStr;
    }
}

四,效果演示

 

中文翻译成英语

 

 

分享到:
方倍微信公众平台消息接口开发(31)微信...
在微信公众平台的开发过程中,我们有时需要开发网页并判断是否是是来自微信浏览器访问,本文介绍如何做出这一判断。   一、$_SERVER数组 $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目...
企业微信公众平台建设指南 - 微信公众平...
作者:方倍工作室  本文是方倍工作室以企业微信公众平台开发经验为基础,整理出来的探讨企业如何建设微信公众平台的分析文章。未经许可,请勿转载。一、自助问答类 对于企业来说,首先可以通过一些自助类的问题设置来引导客户加强对自身的了解,也可以解决一些常见的问题的回复。节省人工回复成本。 比如,在我们的一个...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……