找回密码
 立即注册

QQ登录

只需一步,快速开始

微信公众平台消息接口开发二之中英翻译

9
回复
3635
查看
  [复制链接]

1345

主题

1421

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12059

社区QQ达人

来源: 2014-7-29 20:04:57 显示全部楼层 |阅读模式
阿里云双11新人礼包
一. 翻译接口:
目前有很多第三方翻译接口,比如有道词典,百度等,开发人员根据这些接口可自己实现中英翻译。
有道翻译的源码:需要自己申请key,然后填入
  1. function translate($keyword)
  2. {
  3.     $url = "http://fanyi.youdao.com/openapi.do?keyfrom=******&key=*******&type=data&doctype=json&version=1.1&q=".urlencode($keyword);
  4.      
  5.     $ch = curl_init();
  6.     curl_setopt($ch, CURLOPT_URL, $url);
  7.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8.     $output = curl_exec($ch);
  9.      
  10.     if(curl_errno($ch))
  11.     { echo 'CURL ERROR Code: '.curl_errno($ch).', reason: '.curl_error($ch);}
  12.      
  13.     curl_close($ch);

  14.     //var_dump($content);
  15.     $youdao = json_decode($output, true);
  16.     $errorcode = $youdao['errorCode'];

  17.     $result = "";
  18.     if(isset($errorcode)){
  19.         switch ($errorcode){
  20.             case 0:
  21.                 $translation = $youdao['translation'][0]; //网络释义
  22.                 $explains = $youdao['basic']['explains']; //基本解释
  23.                 if ($translation != "") {
  24.                     $result = $translation;
  25.                 }else{
  26.                     foreach ($explains as $value) {
  27.                         $result = $result."\n".$value;
  28.                     }
  29.                 }
  30.                 break;
  31.             case 20:
  32.                 $result = "输入错误:要翻译的文本过长";
  33.                 break;
  34.             case 30:
  35.                 $result = "系统错误:无法进行有效的翻译";
  36.                 break;
  37.             case 40:
  38.                 $result = "输入错误:不支持的语言类型";
  39.                 break;
  40.             case 50:
  41.                 $result = "系统错误:无效的密钥,没有权限翻译";
  42.                 break;
  43.             default:
  44.                 $result = "系统错误:遇到未知错误,代码:".$errorcode;
  45.                 break;
  46.         }
  47.     }
  48.     else{
  49.         $result = "没有获得翻译结果?请和我们联系";
  50.     }
  51.     //return $youdao['translation']['0'];
  52.     return trim($result);
  53. }
复制代码
二、调用实现
  1. define("TOKEN", "qq62486");

  2.             
  3. $wechatObj = new wechatCallbackapiTest();
  4. $wechatObj->responseMsg();

  5. class wechatCallbackapiTest
  6. {
  7.     public function valid()
  8.     {
  9.         $echoStr = $_GET["echostr"];
  10.         //valid signature , option
  11.         if($this->checkSignature()){
  12.             echo $echoStr;
  13.             exit;
  14.         }
  15.     }

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

  25.             switch ($RX_TYPE)
  26.             {
  27.                 case "text":
  28.                     $resultStr = $this->receiveText($postObj);
  29.                     break;
  30.                 case "event":
  31.                     $resultStr = $this->receiveEvent($postObj);
  32.                     break;
  33.                 default:
  34.                     $resultStr = "unknow msg type: ".$RX_TYPE;
  35.                     break;
  36.             }
  37.             logger("T ".$resultStr);
  38.             echo $resultStr;
  39.         }else {
  40.             echo "";
  41.             exit;
  42.         }
  43.     }

  44.     private function checkSignature()
  45.     {
  46.         $signature = $_GET["signature"];
  47.         $timestamp = $_GET["timestamp"];
  48.         $nonce = $_GET["nonce"];

  49.         $token = TOKEN;
  50.         $tmpArr = array($token, $timestamp, $nonce);
  51.         sort($tmpArr);
  52.         $tmpStr = implode( $tmpArr );
  53.         $tmpStr = sha1( $tmpStr );

  54.         if( $tmpStr == $signature ){
  55.             return true;
  56.         }else{
  57.             return false;
  58.         }
  59.     }

  60.     private function receiveText($object)
  61.     {
  62.         $funcFlag = 0;
  63.         $keyword = trim($object->Content);
  64.         $resultStr = "";
  65.         $cityArray = array();
  66.         $contentStr = "";
  67.         $needArray = false;
  68.         $illegal = false;
  69.         $saytome = false;
  70.          
  71.         if (1 == 1){
  72.             $contentStr = translate($keyword);
  73.             $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
  74.             return $resultStr;
  75.         }
  76.         //Content 消息内容,大小限制在2048字节,字段为空为不合法请求
  77.         return $resultStr;
  78.     }
  79.      
  80.     private function receiveEvent($object)
  81.     {
  82.         $contentStr = "";
  83.         switch ($object->Event)
  84.         {
  85.             case "subscribe":
  86.                 $contentStr = "请直说,我将为你自动翻译";
  87.                 break;
  88.             case "unsubscribe":
  89.                 $contentStr = "";
  90.                 break;
  91.             case "CLICK":
  92.                 switch ($object->EventKey)
  93.                 {
  94.                     default:
  95.                         $contentStr = "receive a eventkey: ".$object->EventKey;
  96.                         break;
  97.                 }
  98.                 break;
  99.             default:
  100.                 $contentStr = "receive a new event: ".$object->Event;
  101.                 break;
  102.         }
  103.         $resultStr = $this->transmitText($object, $contentStr);
  104.         return $resultStr;
  105.     }
  106.      
  107.     private function transmitText($object, $content, $flag = 0)
  108.     {
  109.         $textTpl = "<xml>
  110. <ToUserName><![CDATA[%s]]></ToUserName>
  111. <FromUserName><![CDATA[%s]]></FromUserName>
  112. <CreateTime>%s</CreateTime>
  113. <MsgType><![CDATA[text]]></MsgType>
  114. <Content><![CDATA[%s]]></Content>
  115. <FuncFlag>%d</FuncFlag>
  116. </xml>";
  117.         $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
  118.         return $resultStr;
  119.     }
  120. }
复制代码


回复

使用道具 举报

5

主题

1499

帖子

4623

积分

论坛元老

Rank: 8Rank: 8

积分
4623

社区QQ达人

2016-1-21 09:42:10 显示全部楼层
网程微建站平台(www.phpwc.com,qq:3222486313)是网程公司独立开发的多用户智能微信公众号第三方管理平台(简称:网程微平台),企业无需购买域名、服务器、3分钟就可以在线建立自己的微信网站,现已开发80多种功能应用,近百套行业模版,360°整合CRM系统+网页展示+客户服务+吸粉宣传+收款成交五大服务,满足99%企业/商家互联网营销需求。
网程微建站:www.phpwc.com(微信公众号第三方平台),免费接入,另招全国代理商,QQ:3222486313
回复 支持 反对

使用道具 举报

1

主题

2560

帖子

6440

积分

论坛元老

Rank: 8Rank: 8

积分
6440

社区QQ达人

QQ
2016-8-19 10:39:42 显示全部楼层
阿里云双11新人礼包
林州网程科技有限公司成立于2015年2月,基于微信公众平台为企业提供开发、运营、培训、推广一体化解决方案,帮助企业实现线上线下互通(O2O),社会化客户关系管理(SCRM),移动电商,营销推广、轻应用、社会化营销工具、定制应用等多个层面的业务开发,具备行业领先的研发能力,是一家专注于企业级移动互联网业务的高新技术企业,致力于为各类企事业单位提供先进的、专业化“互联网+”解决方案。(详情请登录网程微平台官网:www.phpwc.com,qq:3285043939)
网程微建站(www.phpwc.com)——微信第三方开发,QQ:3285043939
回复 支持 反对

使用道具 举报

2

主题

17

帖子

45

积分

新手上路

Rank: 1

积分
45

社区QQ达人

2017-1-4 10:49:07 显示全部楼层
朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢
回复 支持 反对

使用道具 举报

2

主题

17

帖子

45

积分

新手上路

Rank: 1

积分
45

社区QQ达人

2017-1-4 10:49:28 显示全部楼层
阿里云双11新人礼包
朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢
回复 支持 反对

使用道具 举报

2

主题

17

帖子

45

积分

新手上路

Rank: 1

积分
45

社区QQ达人

2017-1-4 10:49:45 显示全部楼层
余秋红 发表于 2017-1-4 10:49
朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢

朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢
回复 支持 反对

使用道具 举报

2

主题

17

帖子

45

积分

新手上路

Rank: 1

积分
45

社区QQ达人

2017-1-4 10:50:01 显示全部楼层
阿里云双11新人礼包
余秋红 发表于 2017-1-4 10:49
朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢

朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢
回复 支持 反对

使用道具 举报

2

主题

17

帖子

45

积分

新手上路

Rank: 1

积分
45

社区QQ达人

2017-1-4 10:54:21 显示全部楼层
phpwc8 发表于 2016-1-21 09:42
网程微建站平台(www.phpwc.com,qq:3222486313)是网程公司独立开发的多用户智能微信公众号第三方管理平台 ...


朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢
回复 支持 反对

使用道具 举报

2

主题

17

帖子

45

积分

新手上路

Rank: 1

积分
45

社区QQ达人

2017-1-4 10:55:04 显示全部楼层

朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢
回复 支持 反对

使用道具 举报

2

主题

17

帖子

45

积分

新手上路

Rank: 1

积分
45

社区QQ达人

2017-1-4 10:55:25 显示全部楼层
phpwc8 发表于 2016-1-21 09:42
网程微建站平台(www.phpwc.com,qq:3222486313)是网程公司独立开发的多用户智能微信公众号第三方管理平台 ...


朋友,关注下我微信公众号keyuanjiaoyu80 ,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册