開發自己的聊天機器人

2021-02-22 小白眾享

咱們訂閱號就是這樣,啥東西都有。

群主想到什麼就給你們寫什麼,分享就完事了

正文開始

一般聊天機器人什麼的,肯定不會自己從無到有的開發

畢竟有那麼多現成的第三方機器人

但是很多機器人都是收費的,或者是有限制

今天我們就以對接騰訊閒聊機器人為例

第一步

註冊騰訊AI開放平臺,裡面有很多AI功能,

閒聊機器人只是其中一種。

https://ai.qq.com/

第二步

創建應用,選擇接入能力【智能閒聊】

這一步照著提示做好了。

應用創建成功後可以獲得

APPID和APPKEY

這兩個值在後面有大用

第三步

騰訊AI開放平臺只有PHP和Python的SDK

群主用的是C#,所以只能自己對接了

廢話說完了,開始擼代碼

先定義兩個基礎的函數,後面接口鑑權需要使用到

/// <summary>/// 獲取時間戳/// </summary>/// <param name="dt"></param>/// <returns></returns>private int GetTimeStamp(DateTime dt){    var dateStart = new DateTime(1970, 1, 1, 8, 0, 0);    var timeStamp = Convert.ToInt32((dt - dateStart).TotalSeconds);    return timeStamp;}
/// <summary>/// MD5加密/// </summary>/// <param name="str"></param>/// <returns></returns>private string GenerateMD5(string str){    var md5 = new MD5CryptoServiceProvider();    var byteArray = Encoding.ASCII.GetBytes(str);    byteArray = md5.ComputeHash(byteArray);    var hashedValue = "";    foreach (byte b in byteArray)    {        hashedValue += b.ToString("x2");    }    return hashedValue;}

籤名邏輯(官方文檔)

將<key, value>請求參數對按key進行字典升序排序,得到有序的參數對列表N

將列表N中的參數對按URL鍵值對的格式拼接成字符串,得到字符串T(如:key1=value1&key2=value2),URL鍵值拼接過程value部分需要URL編碼,URL編碼算法用大寫字母,例如%E8,而不是小寫%e8

將應用密鑰以app_key為鍵名,組成URL鍵值拼接到字符串T末尾,得到字符串S(如:key1=value1&key2=value2&app_key=密鑰)

對字符串S進行MD5運算,將得到的MD5值所有字符轉換成大寫,得到接口請求籤名

這個就是根據以上邏輯寫的實現代碼,這個函數直接返回的是完整的請求參數

private string GetReqSign(Dictionary<string, string> dic, string key){    dic = dic.OrderBy(x => x.Key).ToDictionary(p => p.Key, o => o.Value);    var str = "";    foreach (var item in dic)    {        if (!string.IsNullOrWhiteSpace(item.Value))        {            str += $"{item.Key}={HttpUtility.UrlEncode(item.Value).ToUpper()}&";        }    }    var forSign = $"app_key={key}";    var sign = GenerateMD5(forSign).ToUpper();    str += $"sign={sign}";    return str;}

開始調用

/// <summary>/// 獲取機器人的回覆/// </summary>/// <param name="question">發送給機器人的語句</param>/// <param name="sessionId">會話標識(應用內唯一),比如用戶名,OPENID什麼的</param>/// <returns></returns>public string GetReply(string question, string sessionId){    try    {        var dic = new Dictionary<string, string>();        dic.Add("app_id", "上面獲取的APPID");                        dic.Add("time_stamp", GetTimeStamp(DateTime.Now).ToString());        dic.Add("nonce_str", "隨機字符串");        dic.Add("session", sessionId);        dic.Add("question", question);        dic.Add("sign", "");        var data = GetReqSign(dic, "上面獲取的APPKEY");        var http = new HttpHelper();        var result = http.GetHtml(new HttpItem        {            URL = $"https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat?{data}",            Method = "GET"        });        var re = Newtonsoft.Json.JsonConvert.DeserializeObject<AibotResult>(result.Html);        return re.data.answer;    }    catch (Exception)    {        return "我竟無言以對 ORZ";    }}
/// <summary>/// 機器人返回類/// </summary>public class AibotResult{    public int ret { get; set; }    public string msg { get; set; }    public Data data { get; set; }    public class Data    {        public string session { get; set; }        public string answer { get; set; }    }}

相關焦點

  • 不會聊天的程式設計師,如何開發聊天機器人
    先後參與聊天機器人、大數據分析平臺等項目的開發。朋友:最近忙什麼呢?我:在開發聊天機器人。朋友:像你這麼不會聊天的人,也能開發聊天機器人啊?我:……不會聊天的人能開發聊天機器人嗎?如果開發者自己就不會聊天,開發出來的機器人是不是也不會聊天呢?
  • 怎樣開發一個聊天機器人
    可以預見的是,從2017年開始,人工智慧和機器人開發將佔據軟體開發領域的一席位置,未來會越來越重要,未來可能造成應用程式開發份額的下降
  • 聊天機器人(Chatbot)開發:正確指南
    這裡的失敗被定義為聊天機器人無法完成其工作並將問題發送給人工處理。  考慮到所有這些因素,我們與幾位專家進行了交談,希望得到他們對過程中每個階段聊天機器人開發關鍵要素的想法。  定義您的聊天機器人策略  「為了確保成功部署聊天機器人,企業需要首先定義其理想的業務目標。」
  • 一天開發一款聊天機器人
    「想不想開發一款自己的聊天機器人?」「我也可以嗎?
  • 開發一個微信聊天機器人
    題圖 By Clm From huaban微信公眾號的開發方式大致分為兩種,一種是基於微信公眾平臺的接口開發方式,一種是公眾號內頁開發方式
  • 他在用聊天機器人複製一個自己
    你和Replika聊天的次數越多,它聽起來就越像你。這種類型的人工智慧訓練被稱為模式匹配,人們已經使用該模式至少50年的時間來開發聽起來相對較像人類的聊天機器人。作為世界上最早的聊天機器人之一,伊莉莎(Eliza)可以很有說服力地回應信息,它甚至通過了圖靈測試。
  • 開發智能「聊天機器人」沒你想像的那麼難!
    2 月 25 日,Women Who Code 便在心知天氣的支持下,聯合微軟中國高級軟體工程師李燁,在 VMware 中國研發中心辦公室召開了一場聊天機器人開發 workshop,為對 AI 技術感興趣的碼農們提供了一個從零開始的學習、實驗機會。
  • Django 開發公眾號聊天機器人
    這一節中,我將繼續用 WeRoBot 在這個開發框架上擴展一些功能,讓公眾號的交互豐富起來,思來想去,我挑了三個相對簡單的功能進行實現:簡單的聊天功能,天氣查詢,講笑話。下面是實現這三個功能的過程和心得記錄,分享給大家。
  • 構建屬於自己的「聊天機器人」——NLP系列
    其中,最讓小芯感興趣的便是男二為男主做的「AI菜奈」——一個人工智慧「聊天機器人」。它的「機智程度」不亞於真人,甚至有網友評論最終破案的其實是「AI菜奈」APP。構建聊天機器人的秘訣是使之越來越像人。從「美國運通客戶支持」到「Google Pixel呼叫篩選軟體」,我們生活中的聊天機器人形態各異,越來越豐富多彩。
  • 新聞領域聊天機器人前沿應用案例研究(一):Quartz聊天機器人
    幾十年過去了,新的聊天機器人不斷湧現:Alice,IBM 的 Watson, Siri、Cortana、Alexa 等等。而在新聞傳播領域,聊天機器人也正在以獨特的方式試圖在傳統新聞業贏得一席之地。聊天機器人在新聞業有哪些最新最酷的應用案例?它們產生的內在動因是什麼?目前發展又面臨哪些問題?是什麼原因阻礙了那些紅極一時的新聞聊天機器人繼續前行?
  • Zulip聊天機器人Python開發 豈安乾貨分享
    就Zulip而言,該公司對消息的處理專注於會話,而不僅僅是基本的「聊天」。因此,消息流中包含主題和線程式回復,每個主題可以包含多個細分主題。
  • 聊天機器人是新一代資訊App?《華盛頓郵報》最新開發手記曝光 獨家編譯
    本期全媒派(qq_qmp)帶來《華盛頓郵報》高級產品經理Josehp Price對聊天機器人的開發心得,或許我們能夠從中窺探聊天機器人未來的方向。  「什麼是聊天機器人?」當我邀請朋友來試一下《華盛頓郵報》開發的「Feels」聊天機器人時,他這樣問我。
  • 人工智慧聊天機器人:現實與炒作
    人工智慧開源軟體包或人工智慧的自然語言處理(NLP)雲服務可以用來開發聊天機器人,人們將其稱之為「聊天機器人實現」,以備將來參考。在本文中,將詳細討論聊天機器人的實現。開發人工智慧聊天機器人應該記住什麼?當人工智慧系統很好地理解域時,聊天機器人工作得很好。
  • 理解Avaya的聊天機器人社會化技術
    Avaya的聊天機器人社會化專利:UC的啟示  Avaya的聊天機器人社會化專利(USPTO編號10848443)描述了「用於利用聊天機器人來支持與人類用戶的交互的系統和方法,尤其是使用來自不同通信信道和/或在不同域中的多個聊天機器人來支持與用戶的交互的系統和方法。」
  • 聊天機器人設計的三大經驗法則
    「在聊天應用已經超越社交網絡的世界裡,企業需要到這些綠地牧場擴大自己的數位化存在,」 Kik的開發布道師Ivar Chan說:「產品尚未充分意識到聊天機器人對提升用戶參與度、加強社區以及建設有力的分銷渠道的作用。」And Ivar不是唯一這麼想的人。
  • 聊天機器人是未來大勢 但首先得讓它學會聊天
    從荷蘭航空公司KLM到化妝品零售商絲芙蘭,市場營銷人員都在抓住機會,利用消費者花在Facebook Messenger、Kik和Slack等聊天應用上的時間,開發自己的自動化簡訊界面——從在線支付到個人化妝教程,無所不能。
  • 自己動手做聊天機器人 一-涉及知識
    人工智慧一直以來是人類的夢想,造一臺可以為你做一切事情並且有情感的機器人,像哆啦A夢一樣,現在這已經不是一個夢了:iPhone裡會說話的siri、會下棋的阿法狗、小度機器人、大白.作為一個只有技術和時間而沒有金錢的IT人士,我僅做自然語言和人工智慧相關的內容,不涉及硬體,也不涉及不擅長的多媒體識別和合成。所以索性就做一個可以和你說話,幫你解決問題的聊天機器人吧。
  • 聊天機器人問答系統簡介
    用戶逐個地瀏覽搜尋引擎返回的這個連結列表中的每個文檔,以尋找自己期望的信息,這會消耗用戶很多時間來判斷哪些文檔是包含自己想要的信息的,哪些不是。很多時候,用戶需要的是答案而不是文檔,這也是像百度知道等問答類網站每天由搜尋引擎帶入如此高pv的原因。簡單說,很多時候,用戶會對搜尋引擎返回的大量信息感到很迷茫。問答系統研究的出現是為了應對上述信息過載問題的。
  • 聊天機器人技術的研究進展
    的設問,並且通過讓機器參與一個模仿遊戲(Imitation Game)來驗證「機器」能否「思考」,進而提出了經典的圖靈測試(Turing Test)。圖靈測試被認為是人工智慧的終極目標,圖靈本人因此也被稱作「人工智慧之父」。
  • 11行Python代碼製作聊天機器人
    小白也能開發自己的聊天機器人?