微信公眾平台消息接口開發 小黃雞(小賤雞)機器人 微信公眾平台 公眾號聊天機器人 ,消息,接口,小黃雞,小賤雞,機器人



 

第一部分 基於模擬請求的方式

一、模擬請求數據

先看一下小黃雞的網頁版界面

我們通過模擬http請求來實現,上面對話抓包如下:

發送消息的包

接收消息的包:

根據上面的包,模擬發起請求如下:

 

二、與微信對接

小黃雞還可以使用API方式調用,但免費時間有限,代碼和上面基本一樣,就不多寫了。

三、演示效果

 

第二部分 基於接口的方式

一、申請小黃雞接口
SimSimi,發音為〝shim-shimee〞,中文翻譯:小黃雞,由韓文simsim(심심)演變而成。 “심심”原意為“無聊”。SimSimi 由ISMaker於2002年建立流行的人工智能對話系統。
官方網站 http://www.simsimi.com/

接口申請地址: http://developer.simsimi.com/pricing
接口申請流程:
1. 注冊賬號
2. 激活賬號
3. 申請7天試用接口(或者付費購買接口,價格30美元10 萬次)
4. 獲得Key:d4899e2a-7ea8-40ab-a0d2-f258ddd7de15

 

二、接口分析

請求 URL

http://sandbox.api.simsimi.com/request.p?key=your_trial_key&lc=en&ft=1.0&text=hi

請求參數說明
key:授權key
text:查詢消息
lc: 語言代碼
ft: 過濾器參數

響應示例
{ “result”: 100, “response”: “Who are you?!”, “id”: 13185569, “msg”: “OK.” }

響應參數說明
result: 調用結果,成功時為100
id: 響應id
response: 響應消息內容
msg: 調用結果對應的內容

三、程序實現

構造Url參數

復制代碼
    $params['key'] = "d4899e2a-7ea8-40ab-a0d2-f258ddd7de15";
    $params['lc'] = "ch";
    $params['ft'] = "1.0";
    $params['text'] = $keyword;
    
    $url = "http://sandbox.api.simsimi.com/request.p?".http_build_query($params);
復制代碼

CURL獲取內容

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);

獲取回復內容

復制代碼
    $message = json_decode($output,true);
    $result = "";
    if ($message['result'] == 100){
        $result = $message['response'];
    }else{
        $result = $message['result'].$message['msg'];
    }
復制代碼

小黃雞完整代碼simsimi.php

復制代碼
function callSimsimi($keyword)
{
    $params['key'] = "d4899e2a-7ea8-40ab-a0d2-f258ddd7de15";
    $params['lc'] = "ch";
    $params['ft'] = "1.0";
    $params['text'] = $keyword;
    
    $url = "http://sandbox.api.simsimi.com/request.p?".http_build_query($params);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);

    $message = json_decode($output,true);
    $result = "";
    if ($message['result'] == 100){
        $result = $message['response'];
    }else{
        $result = $message['result']."-".$message['msg'];
    }
    return $result;
}
復制代碼

 

接入微信公眾平台
將官方文件的$contentStr = “Welcome to wechat world!”; 修改為接口調用$contentStr = callSimsimi($keyword);

復制代碼
define("TOKEN", "pondbay");

$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
    $wechatObj->valid();
}else{
    $wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            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;
        }
    }

    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_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;
            }
            echo $resultStr;
        }else {
            echo "";
            exit;
        }
    }

    private function receiveText($object)
    {
        $funcFlag = 0;
        $keyword = trim($object->Content);
        include('simsimi.php');
        $contentStr = callSimsimi($keyword);
        $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
        return $resultStr;
    }

    private function receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr = "歡迎關注方倍工作室\n小黃雞為您服務!";
        }
        $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;
    }
}
復制代碼

 

更多內容,請關注方倍工作室微信,然后回復 “教程”,

微信公眾平台 消息 接口 小黃雞 小賤雞 機器人
作者:http://www.cnblogs.com/txw1958/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM