打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
微信公众平台消息接口开发(2)中英翻译

一. 翻译接口:

目前有很多第三方翻译接口,比如有道词典,百度等,开发人员根据这些接口可自己实现中英翻译。

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

function translate($keyword){    $url = "http://fanyi.youdao.com/openapi.do?keyfrom=******&key=*******&type=data&doctype=json&version=1.1&q=".urlencode($keyword);         $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($ch);         if(curl_errno($ch))    { echo 'CURL ERROR Code: '.curl_errno($ch).', reason: '.curl_error($ch);}         curl_close($ch);     //var_dump($content);    $youdao = json_decode($output, true);    $errorcode = $youdao['errorCode'];     $result = "";    if(isset($errorcode)){        switch ($errorcode){            case 0:                $translation = $youdao['translation'][0]; //网络释义                $explains = $youdao['basic']['explains']; //基本解释                if ($translation != "") {                    $result = $translation;                }else{                    foreach ($explains as $value) {                        $result = $result."\n".$value;                    }                }                break;            case 20:                $result = "输入错误:要翻译的文本过长";                break;            case 30:                $result = "系统错误:无法进行有效的翻译";                break;            case 40:                $result = "输入错误:不支持的语言类型";                break;            case 50:                $result = "系统错误:无效的密钥,没有权限翻译";                break;            default:                $result = "系统错误:遇到未知错误,代码:".$errorcode;                break;        }    }    else{        $result = "没有获得翻译结果?请和我们联系";    }    //return $youdao['translation']['0'];    return trim($result);}

二、调用实现

define("TOKEN", "qq62486");              $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 = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>%d</FuncFlag></xml>";        $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);        return $resultStr;    }}



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
微信公众平台开发(三) 订阅事件(subscribe)处理
微信扫描带参数 被动推送事件
使用SAE分词,实现微信智能语音查询
微信公众平台开发(四) 简单回复功能开发
微信关注后那些回复是怎样实现的
php 根据URL下载远程图片、压缩包、pdf等文件到本地
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服