一、下載Bot Framework的SDK 首先,下載Bot Framework的SDK,建議下載Bot Framework的Visual Studio的模板Bot Application。 下載下來的模板(不用解壓)請直接放置到C:\Users\你的用戶名\Documents\Visual Stu ...
一、下載Bot Framework的SDK
首先,下載Bot Framework的SDK,建議下載Bot Framework的Visual Studio的模板Bot Application。
下載下來的模板(不用解壓)請直接放置到C:\Users\你的用戶名\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C# 下麵,這樣你在C#下麵就可以看到有Bot Application的模板了。
二、創建Bot的應用
點擊創建,然後直接發佈Publish。
發佈到本地IIS上,配置個埠,如20080
三、使用ngrok工具,將本地的站點暴露外網中
因為在註冊bot時候是必須得要外網https的鏈接,所以我們先要將BotTest投到外網上。有外網有ssl證書(自簽的不可以)可以忽略這步
1.首先訪問官網,https://ngrok.com/ 註冊一個賬號(註冊後才能獲取自己的一個賬號秘鑰用於進行後面的綁定操作)。
2.註冊完成後,在跳轉後的頁面不用理會支付模塊,可以看到自己的秘鑰信息以及一個下載鏈接
3.點擊下載鏈接,下載ngrok(開始下載後,可以點擊瀏覽器返回到之前有秘鑰信息的頁面,頁面暫時不要關閉,後面還有用),下載完成後可以看到壓縮包里只有一個.exe文件。提示下千萬不要習慣性的以為解壓到當前文件夾,然後雙擊.exe文件哦。正確的操作是解壓的時候選擇 解壓到 ngrok 這個選項。然後將解壓生成的文件夾直接放到自己想放的地方,例如我直接放到D:\ngrok目錄下。
打開cmd
輸入d: 回車
輸入cd: ngrok
輸入註冊完成後給到的Install your authtoken
最後設置對應的埠號,如20080 ngrok http 20080
然後就完成了操作
四、在Bot Framework網站上註冊應用
註冊時需要有一個微軟的帳號來登錄,然後同意授權。在界面中點擊Register a bot開始註冊:
"Name":你的bot的名字。
"Bot Handle":其實就是你的Bot的id。
"Description":你的Bot的描述,會在你的publish之後主頁上顯示。
endpoint,就是你後臺服務的地址:https://你的伺服器地址/api/messages (剛纔咱們發佈的template的預設介面)
你需要點擊"Create Microsoft App ID and password",創建App ID和Password(註意,切記把這個app password記下來,只顯示一次)
下麵的必填的一些選項隨便填一下就可以了。
點擊保存。
更新程式的webconfig
點擊Channels 下Get bot embed codes
將得到的code 替換進default.htm的body里
訪問該頁面:
到此,機器人部分完成。
由於ngrok產生的網址過了一段時間或者沒有使用就會失效,需要重新產生,再配置到bot中
五、LUIS服務
請先登錄:https://www.luis.ai/ ,這是語言理解服務的portal。如果還沒註冊的話用live id註冊以下就可以了。
咱們先點擊"new App"新建一個app。
新建完成後,點擊"Edit",編輯這個應用。
我們先看以下左邊的tab,可以看到有Intents,Entities,Pre-built Entities。。。。
Intents:就是意圖,比如咱們現在要提供圖書查詢的服務,那麼咱們就創建一個"查詢圖書"的Intent。
Entities:實例,比如在查詢圖書的時候需要有書名,出版社,價格等信息,需要把用戶的語言裡頭的這些信息提取出來,這些就是這個句子裡頭的實例,咱們創建一個"圖書"的實例。
Pre-built Entities:這個是預置好的實例,比如說時間,數字等等,我加了一個datetime的預置實例。
Regex Features:正則表達式,可以匹配出相應的一些欄位,比如說航班號。
Phrase List Features:固定的一些短語,能夠直接識別,比如說航空公司的名字等已知信息
建立問題,並可以將書名標註為圖書,然後點擊submit
之後點擊左下角的Train
訓練完成後點擊Publish
在Bot中集成LUIS服務,這塊可以參考佘澤鵬的博客。我略微做了些調整,但原理是一樣的。
六、使用botframework-emulator 工具
該工具可以到https://emulator.botframework.com/ 下載。
通過該工具,可以進行代碼調試並且繞開第四步在Bot Framework網站上註冊應用。不過必須把MessagesController上的 [BotAuthentication] 先註銷掉。
下載打開,先要進行app setting。配置本地的ngrok路徑即可。
然後輸入本地路徑鏈接就可以進行操作了。
在右邊工具也自動記錄下來了日誌。有異常時,可以在Details這塊查看具體信息。
七、使用Http Request來請求
獲得Bot Framework 返回在http://www.cnblogs.com/sonic1abc/p/5941442.html 里有詳細的介紹了。
另外如果既沒有https也不想通過代理的話也可以繞過Bot Framework直接請求Luis,對Luis的返回數據再進行自定義的處理:
System.Net.WebRequest wrq = System.Net.WebRequest.Create(uri);
wrq.Headers.Add("Ocp-Apim-Subscription-Key", luis_Key);
wrq.Method = "GET";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; //SSL3協議替換成TLS協議
System.NetWebResponse wrp = wrq.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(wrp.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));
strResult = sr.ReadToEnd();
Lusi ro = JsonHelper.JsonDeserialize<Lusi>(strResult);
反序列化後得到的信息和Luis官網請求得到的結果形式一樣。
將處理好的信息之後,再調用微信的api介面返回,既可以完成微信上面的人工智慧了。
public class MessageBiz : BaseBiz
{
public SendResponse Send<T>(T request)
{
string strJson = JsonConvert.SerializeObject(request);
//_SendLog.WriteLog("new: " + strJson);
base.url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + TokenBiz.GetAccessToken(str_corpid, str_corpsecret);
base.para = strJson;
base.method = "POST";
base.needAccessToken = true;
var res = base.GetUrlReturn<SendResponse>();
return res;
}
}
因為我是企業號,所以調用的企業號服務,介面說明可以參見:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E。公眾號道理還是一樣的,換公眾號介面另外實現而已。
最後來簡單看下效果截圖。
參考資料:
http://www.cnblogs.com/rocsheh/p/5846009.html
http://blog.csdn.net/xxdddail/article/details/51190754
http://blog.csdn.net/gebitan505/article/details/39497779
http://www.cnblogs.com/sonic1abc/p/5941442.html