WeChat ロボット開発チュートリアルの詳細な例
WeChat パブリック プラットフォーム開発チュートリアル (4) サンプルの開始: ロボット (ソース コード付き)
前回の記事では、多くの人が混乱しているかもしれないので、簡単な例を示します。謎を解くことができます。
1. 機能紹介
WeChatパブリックプラットフォームを通じてオンライン接客ロボット機能を実現します。 主な機能には、簡単な会話、天気予報、その他のサービスが含まれます。
ここでは、この例を使用してパブリック プラットフォームの特定の開発プロセスを説明することに重点を置き、比較的単純な関数のみを提供します。これは単なる単純なデモであり、必要に応じてこれをベースに拡張できます。
もちろん、将来的にはより複雑なアプリケーション例もリリースする予定です。
2. 具体的な実装
1. インターフェースへのアクセスを提供します
ここでは詳しく説明しません。前の章、WeChat パブリック アカウント開発チュートリアル (2) 基本フレームワーク構築www.cnblogs を参照してください。 com/yank/p/3392394 .html
www.cnblogs.com/yank /p/3392394.html
class EventHandler : IHandler { /// <summary> /// 请求的xml /// </summary> private string RequestXml { get; set; } /// <summary> /// 构造函数 /// </summary> /// <param name="requestXml"></param> public EventHandler(string requestXml) { this.RequestXml = requestXml; } /// <summary> /// 处理请求 /// </summary> /// <returns></returns> public string HandleRequest() { string response = string.Empty; EventMessage em = EventMessage.LoadFromXml(RequestXml); if (em.Event.Equals("subscribe",StringComparison.OrdinalIgnoreCase)) { //回复欢迎消息 TextMessage tm = new TextMessage(); tm.ToUserName = em.FromUserName; tm.FromUserName = em.ToUserName; tm.CreateTime = Common.GetNowTime(); tm.Content = "欢迎您关注***,我是大哥大,有事就问我,呵呵!\n\n"; response = tm.GenerateContent(); } return response; } }
WeChatはもともとコミュニケーションのためのプラットフォームです。このケースはタオバオの顧客サービス ロボットと同様のオンライン サービス ロボットに使用できますが、私たちのものは WeChat バージョンです。笑
実際には、リクエストメッセージを取得し、キーワードに基づいてレスポンスを照合するだけです。もちろん、インテリジェント マッチングをサポートする方法やファジー マッチングをサポートする方法など、ここでやるべきことはたくさんあるかもしれません。
/// <summary> /// 文本信息处理类 /// </summary> public class TextHandler : IHandler { /// <summary> /// 请求的XML /// </summary> private string RequestXml { get; set; } /// <summary> /// 构造函数 /// </summary> /// <param name="requestXml">请求的xml</param> public TextHandler(string requestXml) { this.RequestXml = requestXml; } /// <summary> /// 处理请求 /// </summary> /// <returns></returns> public string HandleRequest() { string response = string.Empty; TextMessage tm = TextMessage.LoadFromXml(RequestXml); string content = tm.Content.Trim(); if (string.IsNullOrEmpty(content)) { response = "您什么都没输入,没法帮您啊,%>_<%。"; } else { if (content.StartsWith("tq", StringComparison.OrdinalIgnoreCase)) { string cityName = content.Substring(2).Trim(); response = WeatherHelper.GetWeather(cityName); } else { response = HandleOther(content); } } tm.Content = response; //进行发送者、接收者转换 string temp = tm.ToUserName; tm.ToUserName = tm.FromUserName; tm.FromUserName = temp; response = tm.GenerateContent(); return response; } /// <summary> /// 处理其他消息 /// </summary> /// <param name="tm"></param> /// <returns></returns> private string HandleOther(string requestContent) { string response = string.Empty; if (requestContent.Contains("你好") || requestContent.Contains("您好")) { response = "您也好~"; } else if (requestContent.Contains("傻")) { response = "我不傻!哼~ "; } else if (requestContent.Contains("逼") || requestContent.Contains("操")) { response = "哼,你说脏话! "; } else if (requestContent.Contains("是谁")) { response = "我是大哥大,有什么能帮您的吗?~"; } else if (requestContent.Contains("再见")) { response = "再见!"; } else if (requestContent.Contains("bye")) { response = "Bye!"; } else if (requestContent.Contains("谢谢")) { response = "不客气!嘿嘿"; } else if (requestContent == "h" || requestContent == "H" || requestContent.Contains("帮助")) { response = @"查询天气,输入tq 城市名称\拼音\首字母"; } else { response = "您说的,可惜,我没明白啊,试试其他关键字吧。"; } return response; } }
テキストメッセージ処理を使用します。 ユーザーリクエスト: tq 都市名/ピンイン/頭文字を入力するだけでメッセージを取得できます。
北京 2013年11月6日 星期三 今天:(17℃~4℃)晴北风4-5级转3-4级4-5级转3-4级 24小时穿衣指数:天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。 明天:(14℃~3℃)晴转多云微风小于3级 48小时穿衣指数:天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。
ソースコードを見てみましょう:
class WeatherHelper { /// <summary> /// 城市集合字段 /// </summary> private static Dictionary<string, City> mCities; /// <summary> /// 城市集合 /// </summary> public static Dictionary<string, City> Cities { get { if (mCities == null) { LoadCities(); } return mCities; } } /// <summary> /// 加载城市 /// </summary> private static void LoadCities() { mCities = new Dictionary<string, City>(); mCities.Clear(); mCities.Add("101010100", new City() { Code = "101010100", Name = "北京", PinYin = "beijing", FristLetter = "bj" }); mCities.Add("101020100", new City() { Code = "101020100", Name = "上海", PinYin = "shanghai", FristLetter = "sh" }); mCities.Add("101200101", new City() { Code = "101200101", Name = "武汉", PinYin = "wuhai", FristLetter = "wh" }); } /// <summary> /// 获取城市的天气 /// </summary> /// <param name="name">城市名称、拼音或首字母</param> /// <returns></returns> public static string GetWeather(string name) { string result = string.Empty; string cityCode = string.Empty; //获取城市编码 IEnumerable<string> codes = from item in Cities where item.Value != null && (item.Value.Name.Equals(name, StringComparison.OrdinalIgnoreCase) || item.Value.PinYin.Equals(name, StringComparison.OrdinalIgnoreCase) || item.Value.FristLetter.Equals(name, StringComparison.OrdinalIgnoreCase)) select item.Value.Code; if (codes != null && codes.Count() > 0) { cityCode = codes.First<string>(); } //http请求,获取天气 if (!string.IsNullOrEmpty(cityCode)) { string url = "http://m.weather.com.cn/data/{0}.html"; url = string.Format(url, cityCode); WebRequest request = HttpWebRequest.Create(url); //超时时间为:2秒 request.Timeout = 2000; request.Credentials = CredentialCache.DefaultCredentials; WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string weahterInfo = reader.ReadToEnd(); if (string.IsNullOrEmpty(weahterInfo)) { result = "暂时没有取到天气数据,请稍后再试"; } else { XmlDocument doc = JsonConvert.DeserializeXmlNode(weahterInfo); if (doc != null) { XmlNode node = doc.DocumentElement; if (node != null) { StringBuilder builder = new StringBuilder(); builder.Append(node["city"].InnerText).Append("\n"); builder.Append(node["date_y"].InnerText).Append(" ").Append(node["week"].InnerText).Append("\n"); builder.Append("今天:").Append("(").Append(node["temp1"].InnerText).Append(")").Append(node["weather1"].InnerText).Append(node["wind1"].InnerText).Append(node["fl1"].InnerText).Append("\n"); builder.Append("24小时穿衣指数:").Append(node["index_d"].InnerText).Append("\n"); builder.Append("明天:").Append("(").Append(node["temp2"].InnerText).Append(")").Append(node["weather2"].InnerText).Append(node["wind2"].InnerText).Append(node["fl2"].InnerText).Append("\n"); builder.Append("48小时穿衣指数:").Append(node["index48_d"].InnerText).Append("\n"); result = builder.ToString(); } } #region 天气json数据格式 /* { "weatherinfo": { "city": "北京", "city_en": "beijing", "date_y": "2013年11月4日", "date": "", "week": "星期一", "fchh": "11", "cityid": "101010100", "temp1": "17℃~5℃", "temp2": "16℃~5℃", "temp3": "18℃~4℃", "temp4": "17℃~5℃", "temp5": "14℃~6℃", "temp6": "14℃~2℃", "tempF1": "62.6℉~41℉", "tempF2": "60.8℉~41℉", "tempF3": "64.4℉~39.2℉", "tempF4": "62.6℉~41℉", "tempF5": "57.2℉~42.8℉", "tempF6": "57.2℉~35.6℉", "weather1": "晴转多云", "weather2": "多云", "weather3": "多云转晴", "weather4": "晴转多云", "weather5": "多云转阴", "weather6": "阴转晴", "img1": "0", "img2": "1", "img3": "1", "img4": "99", "img5": "1", "img6": "0", "img7": "0", "img8": "1", "img9": "1", "img10": "2", "img11": "2", "img12": "0", "img_single": "0", "img_title1": "晴", "img_title2": "多云", "img_title3": "多云", "img_title4": "多云", "img_title5": "多云", "img_title6": "晴", "img_title7": "晴", "img_title8": "多云", "img_title9": "多云", "img_title10": "阴", "img_title11": "阴", "img_title12": "晴", "img_title_single": "晴", "wind1": "微风", "wind2": "微风", "wind3": "微风", "wind4": "微风", "wind5": "微风", "wind6": "北风4-5级", "fx1": "微风", "fx2": "微风", "fl1": "小于3级", "fl2": "小于3级", "fl3": "小于3级", "fl4": "小于3级", "fl5": "小于3级", "fl6": "4-5级", "index": "较冷", "index_d": "建议着大衣、呢外套加毛衣、卫衣等服装。体弱者宜着厚外套、厚毛衣。因昼夜温差较大,注意增减衣服。", "index48": "冷", "index48_d": "天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。", "index_uv": "中等", "index48_uv": "弱", "index_xc": "适宜", "index_tr": "适宜", "index_co": "舒适", "st1": "17", "st2": "5", "st3": "17", "st4": "5", "st5": "18", "st6": "6", "index_cl": "适宜", "index_ls": "适宜", "index_ag": "极不易发" } } */ #endregion } } else { result = "没有获取到该城市的天气,请确定输入了正确的城市名称,如\'北京\'或者\'beijing\'或者\'bj\'"; } //返回 return result; } /// <summary> /// 内部类:城市 /// </summary> internal class City { /// <summary> /// 编码 /// </summary> public string Code { get; set; } /// <summary> /// 名称 /// </summary> public string Name { get; set; } /// <summary> /// 拼音 /// </summary> public string PinYin { get; set; } /// <summary> /// 拼音首字母 /// </summary> public string FristLetter { get; set; } } }
WeChatパブリックアカウントプラットフォームのソースコードのダウンロード
2.以上がWeChat ロボット開発チュートリアルの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









人型ロボット「アメカ」が第二世代にバージョンアップ!最近、世界移動通信会議 MWC2024 に、世界最先端のロボット Ameca が再び登場しました。会場周辺ではアメカに多くの観客が集まった。 GPT-4 の恩恵により、Ameca はさまざまな問題にリアルタイムで対応できます。 「ダンスをしましょう。」感情があるかどうか尋ねると、アメカさんは非常に本物そっくりの一連の表情で答えました。ほんの数日前、Ameca を支援する英国のロボット企業である EngineeredArts は、チームの最新の開発結果をデモンストレーションしたばかりです。ビデオでは、ロボット Ameca は視覚機能を備えており、部屋全体と特定のオブジェクトを見て説明することができます。最も驚くべきことは、彼女は次のこともできるということです。

Machine Power Report 編集者: Wu Xin 国内版の人型ロボット + 大型模型チームは、衣服を折りたたむなどの複雑で柔軟な素材の操作タスクを初めて完了しました。 OpenAIのマルチモーダル大規模モデルを統合したFigure01の公開により、国内同業者の関連動向が注目を集めている。つい昨日、中国の「ヒューマノイドロボットのナンバーワン株」であるUBTECHは、Baidu Wenxinの大型モデルと深く統合されたヒューマノイドロボットWalkerSの最初のデモを公開し、いくつかの興味深い新機能を示した。 Baidu Wenxin の大規模モデル機能の恩恵を受けた WalkerS は次のようになります。 Figure01 と同様に、WalkerS は動き回るのではなく、机の後ろに立って一連のタスクを完了します。人間の命令に従って服をたたむことができる

産業オートメーション技術の分野では、人工知能 (AI) と Nvidia という無視できない 2 つの最近のホットスポットがあります。元のコンテンツの意味を変更したり、コンテンツを微調整したり、コンテンツを書き換えたり、続行しないでください。「それだけでなく、Nvidia はオリジナルのグラフィックス プロセッシング ユニット (GPU) に限定されていないため、この 2 つは密接に関連しています。」このテクノロジーはデジタル ツインの分野にまで広がり、新たな AI テクノロジーと密接に関係しています。「最近、NVIDIA は、Aveva、Rockwell Automation、Siemens などの大手産業オートメーション企業を含む多くの産業企業と提携に至りました。シュナイダーエレクトリック、Teradyne Robotics とその MiR および Universal Robots 企業も含まれます。最近、Nvidiahascoll

今週、OpenAI、Microsoft、Bezos、Nvidiaが投資するロボット企業FigureAIは、7億ドル近くの資金調達を受け、来年中に自立歩行できる人型ロボットを開発する計画であると発表した。そしてテスラのオプティマスプライムには繰り返し良い知らせが届いている。今年が人型ロボットが爆発的に普及する年になることを疑う人はいないだろう。カナダに拠点を置くロボット企業 SanctuaryAI は、最近新しい人型ロボット Phoenix をリリースしました。当局者らは、多くのタスクを人間と同じ速度で自律的に完了できると主張している。人間のスピードでタスクを自律的に完了できる世界初のロボットである Pheonix は、各オブジェクトを優しくつかみ、動かし、左右にエレガントに配置することができます。自律的に物体を識別できる

掃除ロボットやモップ拭きロボットは、近年消費者の間で最も人気のあるスマート家電製品の 1 つです。操作の利便性、あるいは操作の必要がないことで、怠け者は手を解放し、消費者は日常の家事から「解放」され、好きなことにもっと時間を費やすことができるようになり、生活の質が向上します。この流行に乗って、市場に出回っているほぼすべての家電ブランドが独自の掃除ロボットや拭き掃除ロボットを製造しており、掃除ロボット市場全体が非常に活発になっています。しかし、市場の急速な拡大は必然的に隠れた危険をもたらします。多くのメーカーがより多くの市場シェアを急速に占有するために機械の海戦術を使用し、その結果、アップグレードポイントのない多くの新製品が生まれるとも言われています。まさに「マトリョーシカ」モデルです。ただし、すべての掃除ロボットやモップロボットがそうであるわけではありません。

瞬く間に、ロボットは魔法を使えるようになったのでしょうか?最初にテーブルの上の水スプーンを取り上げ、中には何も入っていないことを観客に証明したのが見られました。次に、卵のような物体を手に置き、水スプーンをテーブルに戻し、が「呪文を唱え」始めました… …再び水スプーンを拾ったそのとき、奇跡が起こりました。元々入っていた卵が消えて、飛び出してきたのがバスケットボールに… もう一度連続動作を見てみましょう: △ このアニメーションは一連の動作を2倍速で表示しており、スムーズに流れています。ビデオを 0.5 倍速で繰り返し再生すると、うまくいくでしょうか? 最後に、手の速度がもっと速ければ、敵から隠すことができるかもしれないという手がかりを発見しました。一部のネチズンは、ロボットの魔法のスキルが自分たちのものよりもさらに高いと嘆いていました。マグは私たちのためにこの魔法を実行してくれたのです。

以下の 10 種類の人型ロボットが私たちの未来を形作ります。 1. ASIMO: ホンダが開発した ASIMO は、最もよく知られている人型ロボットの 1 つです。身長 4 フィート、体重 119 ポンドの ASIMO には、高度なセンサーと人工知能機能が装備されており、複雑な環境をナビゲートし、人間と対話することができます。 ASIMO は多用途性を備えているため、障害を持つ人々の支援からイベントでのプレゼンテーションまで、さまざまなタスクに適しています。 2. Pepper: ソフトバンクロボティクスによって作成された Pepper は、人間の社会的パートナーになることを目指しています。表情豊かな顔と感情を認識する能力を備えた Pepper は、会話に参加したり、小売現場で手助けしたり、教育サポートを提供したりすることもできます。コショウ

「ゼルダの伝説 涙の王国」は、任天堂ゲーム史上最速で売れたゲームとなりました。Zonav Technology は、さまざまな「ゼルダ クリエイター」コミュニティ コンテンツをもたらしただけでなく、米国の大学の新しい工学コースにもなりました。メリーランド州(UMD)。 Rewrite: The Legend of Zelda: Tears of the Kingdom は、任天堂の史上最速で売れたゲームの 1 つです。 Zonav Technology は、豊富なコミュニティ コンテンツをもたらすだけでなく、メリーランド大学の新しいエンジニアリング コースの一部にもなりました。この秋、メリーランド大学のライアン D. ソチョル准教授は、「」と呼ばれるコースを開設しました。
