奪命雷公狗---微信開發39----微信語言識別接口1

語音識別接口的基本介紹

?

?

?

注意:

由于客戶端緩存,開發者開啟或者關閉語音識別功能,對新關注者立即生效,對已關注用戶需要24小時生效,開發者可以從新關注帳號進行測試。

?

我們可以在測試號下方的體驗接口權限表里面找到“接收語音識別結果”,如下圖所示

?

?

現在這里是顯示的關閉,就是開啟,如果想使用,那么就必“關閉”。

點擊一下開啟后,他就會問你是否關閉,所以這里的意思是相反的,如圖所示:

?

然后再點擊一下確定即可關閉。

?

不過我們現在要對他進行開發所以這里就要顯示關閉這兩個字,然后點擊“接收語音識別結果”即可進入手冊詳情頁,如下圖所示:

?

?

?

?

我們先來個簡單的,index.php代碼如下所示:

?

<?php
/*** wechat php test*///define your token
require_once "common.php";
//這里是引入curl發送函數的類
require_once 'WeChat.class.php';
define("TOKEN", "twgdh");//這里讓這個類繼承了curl發送參數的類
class wechatCallbackapiTest extends WeChat
{public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($this->checkSignature()){echo $echoStr;exit;}}public function responseMsg(){//get post data, May be due to the different environments$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (!empty($postStr)){/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,the best way is to check the validity of xml by yourself */// 使用simplexml技術對xml進行解析 // libxml_disable_entity_loader(true), 是從安全性考慮,為了防止xml外部注入,//只對xml內部實體內容進行解析libxml_disable_entity_loader(true);//加載 postStr 字符串$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$keyword = trim($postObj->Content);$time = time();global $tmp_arr;//根據接收到的消息類型,來進行分支處理(switch)switch($postObj->MsgType){case 'event':if($postObj->Event == 'subscribe'){$contentStr = "歡迎關注leigood微信測試號噢";$resultStr = sprintf($tmp_arr['text'], $fromUsername, $toUsername, $time, $contentStr);echo $resultStr; }//響應用戶的點擊事件if($postObj->Event == 'CLICK'){if($postObj->EventKey == 'V1001_TODAY_MUSIC'){ //自定義菜單里面有很多個,這里key是自定義的//這里主要寫自己想要的業務邏輯$contentStr = "奪命雷公狗歡迎您來到編程世界";$resultStr = sprintf($tmp_arr['text'], $fromUsername, $toUsername, $time, $contentStr);echo $resultStr; }}break;case 'text': //回復文本模塊//這里開始測試客服消息接口了if($keyword == '文本'){//獲取tokenrequire 'get_token.php';$contentStr = '這是客服接口的回復,我們可以幫助您什么?';//對發送的內容進行urlencode編碼,防止中文亂碼$contentStr = urlencode($contentStr);//到時候我們我發送的內容我們放到一個數組里面去了$content_arr = array('content'=>"{$contentStr}");//這里的意思是將來我要發送消息給這個用戶$reply_arr = array('touser'=>"{$fromUsername}",'msgtype'=>'text','text'=>$content_arr);//下一步就是將編碼轉成規定的json格式$post = json_encode($reply_arr);//url解碼,如果不解碼他將會發來一段二進制代碼$post = urldecode($post);$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$access_token}";//這里我們來使用類的繼承機制,來簡化代碼$this -> http_request($url,$post);//這里是可以回復多條消息的,只需要在執行下這個函數即可//$this -> http_request($url,$post);
                           }else{$contentStr = '您輸入的格式有誤';$resultStr = sprintf($tmp_arr['text'], $fromUsername, $toUsername, $time, $contentStr);echo $resultStr;}break;case 'voice';//取出用戶說的內容$recognition = $postObj->Recognition;$contentStr = "您剛才說的是:".$recognition;$resultStr = sprintf($tmp_arr['text'], $fromUsername, $toUsername, $time, $contentStr);echo $resultStr;break;}}else {echo "";exit;}}private function checkSignature(){// you must define TOKEN by yourselfif (!defined("TOKEN")) {throw new Exception('TOKEN is not defined!');}$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);// use SORT_STRING rulesort($tmpArr, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}
}//如果這段代碼放在上面,那程序將會報錯,因為繼承的問題,會顯示類沒有找到
$wechatObj = new wechatCallbackapiTest();
//當接入成功后,請注銷這句話,否則,會反復驗證。
//$wechatObj->valid();
//添加響應請求的語句
$wechatObj->responseMsg();?>

?

核心代碼如下:

?

?

然后您給公眾號發送語音,他即可按文字形式對您進行返回。

?

?

溫馨提示:每次他以文字返回的時候她會在后面加多一個“!”號

轉載于:https://www.cnblogs.com/leigood/p/5240773.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257615.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257615.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257615.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Codeforces 803E--Roma and Poker (DP)

原題鏈接&#xff1a;http://codeforces.com/problemset/problem/803/E 題意&#xff1a;給一個n長度的字符串&#xff0c;其中?可以替換成D、W、L中的任意一種&#xff0c;D等價于0, W等價于1、L等價于-1。輸出所有?被替換掉后&#xff0c;W和L的數目之差為k&#xff0c;且任…

java構造塊_java中的靜態代碼塊、構造代碼塊、構造方法詳解

運行下面這段代碼&#xff0c;觀察其結果&#xff1a;package com.test;public class HelloB extends HelloA {public HelloB() {}{System.out.println("Im B class");}static {System.out.println("static B");}public static void main(String[] args) {…

推薦一個不錯的 Chrome 插件,百變皮膚,還可以去廣告

今天在這里給大家推薦一個非常棒&#xff0c;非常不錯的 Chrome 插件&#xff0c;功能實在是強大又好玩&#xff0c;讓你在瀏覽器中可以如孫悟空一樣72變&#xff0c;再不濟&#xff0c;如果你不會用&#xff0c;不會自定義寫 CSS 樣式&#xff0c;也能夠做到如豬八戒般 36 變。…

【轉】DB2 常用命令

1、 打開命令行窗口   #db2cmd 2、 打開控制中心   # db2cmd db2cc 3、 打開命令編輯器  db2cmd db2ce 操作數據庫命令 4、 啟動數據庫實例   #db2start 5、 停止數據庫實例   #db2stop  如果你不能停止數據庫由于激活的連接&#xff0c;在運行db2stop前執行db2 force ap…

c#調用R

R.NET使用文檔 介紹 本頁面涉及R.NET1.5.13。 1.5.13版本在功能上等同于1.5.12&#xff0c;但可作為一個包在NuGet.org上獲得。 R.NET使.NET框架與R統計語言在同一進程進行互操作。 R.NET需要.NET Framework 4的并有R環境中安裝的本地的DLL。您可以使用R.NET用在.NET的任何語言…

java applet 文本框_Java Applet 文本框 TextField 小例 | 學步園

一個Java Applet程序中必須有一個類是Applet類的子類&#xff0c;成為該子類是Java Applet的主類&#xff0c; 并且必須是public class。 Applet類是包java.applet中的一個類&#xff0c; 同時它還是包java.awt中Container(容器)類的子類。因此Java Applet的主類的實例是一個容…

python界面工具pyqt基礎教程

這里有一份很詳細的中文翻譯供我們學習pyqt&#xff0c;很適合初學者和中級學者&#xff0c;直接丟傳送門&#xff0c;不多說 http://www.qaulau.com/books/PyQt4_Tutorial/introduction.html轉載于:https://www.cnblogs.com/semishigure/p/7451689.html

博客園客戶端(睡睡版iphone)源碼

1.關于 https://itunes.apple.com/us/app/shui-shui-bo-ke-yuan/id512394144?ls1&mt8 項目目前為V3.0版&#xff0c;也是我開發的最新版&#xff0c;目前已無法在appstore下載&#xff0c;項目介紹&#xff1a;http://www.cnblogs.com/bandy/p/3509482.html 2.現狀 目前本…

Spring MVC不要在@Service bean中保存狀態

先看這么一段代碼&#xff1a; Service public class AccountService {private String message;public void foo1() {if (true) {this.message "a";} else {this.message "b";}}public void foo2() {// 改動this.message的代碼...// ... ...} }假設你打算…

java class 關鍵字_java關鍵字及其作用

一、 關鍵字總覽:訪問控制privateprotectedpublic類,方法和變量修飾符abstractclassextendsfinalimplementsinterfacenativenewstaticstrictfpsynchronizedtransientvolatile程序控制breakcontinuereturndowhileifelseforinstanceofswitchcasedefault錯誤處理trycatchthrowthro…

3.過濾數據 ---SQL

一、使用WHERE子句 SELECT prod_name, prod_price FROM Products WHERE prod_price 3.49; 輸出▼ prod_name prod_price ------------------- ---------- Fish bean bag toy 3.49 Bird bean bag toy 3.49 Rabbit bean bag toy 3.49 分析▼ 這條語句從products表中檢索兩個列&a…

IOS-C語言第8天,Struct (結構體)

轉載于:https://www.cnblogs.com/xiangrongsu/p/4309160.html

Win2D 入門教程 VB 中文版 - 防止內存泄漏

避免內存泄漏 本文從微軟官方文檔翻譯 http://microsoft.github.io/Win2D/html/RefCycles.htm 如果文檔有問題&#xff0c;可以在 https://github.com/Nukepayload2/Win2dDocVB發 Issue&#xff0c;也可以直接回復。 當在托管的 XAML 應用程序中使用 Win2D 控件&#xff0c;需要…

java concurrent 鎖_java并發機制鎖的類型和實現

synchronized 和 volatile&#xff0c;是最基礎的兩個鎖&#xff01;volatile是輕量級鎖&#xff0c;它在多核處理器開發中保證了共享變量的可見性。即當一個線程修改一個共享變量時&#xff0c;其他線程能夠讀到這個修改的值。它比syncronized使用和成本更低。要說volatile的實…

JAXB和XStream比較

這兩東東本質上是有差別的&#xff0c;JAXB稱為OX binding工具&#xff0c;XStream應該算序列化工具&#xff0c;但OX binding工具也會marshall和unmarshall&#xff0c;所以包含了序列化這一部分。序列化工具不一定需要提供binding的功能。既然都玩序列化&#xff0c;那就簡單…

【起航計劃 011】2015 起航計劃 Android APIDemo的魔鬼步伐 10 App-Activity-Reorder Activities 后退棧 Intent FLAG...

Reorder Activities 示例有四個相關的Activitives: ReorderOnLaunch, ReorderTwo,ReorderThree, ReorderFour。其中ReorderOnLaunch為主Activity&#xff0c;ReorderOnLaunch啟動ReorderTwo &#xff0c;ReorderTwo啟動 ReorderThree&#xff0c;ReorderThree啟動 ReorderFour。…

java date dateformat_java中Date與DateFormat的格式輸出

一、DateFormatjava.text.DateFormat使用 getDateInstance 來獲取該國家/地區的標準日期格式。另外還提供了一些其他靜態工廠方法。使用 getTimeInstance 可獲取該國家/地區的時間格式。使用 getDateTimeInstance 可獲取日期和時間格式。可以將不同選項傳入這些工廠方法&#x…

spartan6不能直接把時鐘連到IO上

1、問題的提出&#xff1a;spartan6中不允許時鐘信號直接連到IO口上面&#xff1f; 2、解決辦法&#xff1a;ODDR2的使用 ODDR2Primitive: Double Data Rate Output D Flip-Flop with Optional Data Alignment, Clock Enable and Programmable Synchronous or Asynchronous Set…

STL容器及適配器

STL容器 1.序列式容器 &#xff1a; vector&#xff0c;deque&#xff0c;list。 每個元素都有固定的位置&#xff08;取決于插入的時機和位置&#xff0c;與元素值無關&#xff09;。 vector 特點&#xff1a; 將一個元素置于一個動態數組中加以管理&#xff0c;可以隨機存取元…

Html5 Canvas斗地主游戲

過完年來公司&#xff0c;沒什么事&#xff0c;主管說研究下html5 游戲&#xff0c;然后主管就給了一個斗地主的demo&#xff0c;隨后我就開始看代碼&#xff0c; 現在我看了html5以及canvas相關知識和斗地主的demo后&#xff0c;自己用demo上的素材試著寫了個斗地主&#xff0…