WeChat 로봇 개발 튜토리얼의 자세한 예
WeChat 공개 플랫폼 개발 튜토리얼(4) 예제 시작하기: 로봇(소스 코드 포함)
이전 기사에서 기본 프레임워크를 작성했는데 다음은 간단한 예제입니다. 설명을 통해 미스터리를 해결하는 데 도움이 되기를 바랍니다.
1. 기능 소개
위챗 공개 플랫폼을 통해 온라인 고객 서비스 로봇 기능을 구현합니다. 주요 기능은 간단한 대화, 날씨 조회, 기타 서비스입니다.
여기에서는 공개 플랫폼의 구체적인 개발 프로세스를 설명하기 위해 이 예제를 사용하는 데 중점을 두고 비교적 간단한 기능만 제공합니다. 이는 단순한 DEMO일 뿐이며 필요한 경우 이를 기반으로 확장할 수 있습니다.
물론 앞으로는 더 복잡한 애플리케이션 예제를 출시할 예정입니다.
2. 구체적인 구현
1. 인터페이스에 대한 액세스 제공
여기서는 이전 장을 참조하지 않겠습니다. 위챗 공개계정 개발 튜토리얼(2편) ) 기본 프레임워크 구축
www.cnblogs.com/yank/p/3392394.html
2.서명인증 및 배포요청
당첨되었습니다. 여기서 자세한 내용은 다루지 말고 이전 장인 WeChat 공개 계정 개발 튜토리얼을 참조하세요. (2) 기본 프레임워크 구성
www.cnblogs.com/yank/p/3392394.html
3. 그리고 응답
1) 팔로우
WeChat 사용자가 공개 계정을 팔로우하면 적절한 메시지가 표시될 수 있습니다. 환영 메시지일 수도 있고 도움말 팁일 수도 있습니다.
코드 직접 입력:
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; } }
2) 인사말
위챗으로 채팅하듯이 안녕하세요, 도와주세요 등 간단한 인사말을 주고받지만, 응답은 우리 프로그램이 응답하는 것입니다. 필요에 따라 특정 기능을 추가할 수 있습니다.
위챗은 본래 소통을 위한 플랫폼입니다. 이 케이스는 타오바오의 고객 서비스 로봇과 유사하게 온라인 서비스 로봇에 사용할 수 있지만, 저희 제품은 위챗 버전입니다. ㅎㅎ
사실 아주 간단합니다. 요청 메시지를 받고 키워드에 따라 응답을 매칭하면 됩니다. 물론 여기서는 지능형 매칭을 지원하는 방법, 퍼지 매칭을 지원하는 방법 등 해야 할 일이 많을 수 있습니다.
코드는 다음과 같습니다.
/// <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; } }
3) 날씨 쿼리
이 함수는 실시간 쿼리를 요청하고 공식 날씨 발표 웹 사이트를 요청한 후 파싱해야 합니다. 우리의 요구 형식에 따라 값을 반환하고, 날씨 정보를 정리하여 최종적으로 WeChat 고객에게 보냅니다.
문자 메시지 처리를 사용합니다.
사용자 요청: 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 로봇 개발 튜토리얼의 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 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
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











휴머노이드 로봇 아메카가 2세대로 업그레이드 되었습니다! 최근 세계이동통신학회(MWC2024)에서 세계 최고 수준의 로봇 아메카(Ameca)가 다시 등장했다. 행사장 주변에는 아메카가 많은 관중을 끌어 모았습니다. GPT-4의 축복으로 Ameca는 다양한 문제에 실시간으로 대응할 수 있습니다. "춤을 추자." 감정이 있느냐는 질문에 아메카는 매우 생생해 보이는 일련의 표정으로 대답했습니다. 불과 며칠 전, Ameca의 뒤를 잇는 영국 로봇 회사인 EngineeredArts는 팀의 최신 개발 결과를 시연했습니다. 영상 속 로봇 아메카는 시각 능력을 갖고 있어 방 전체와 특정 사물을 보고 묘사할 수 있다. 가장 놀라운 점은 그녀도 할 수 있다는 것입니다.

기계력 보고서 편집자: 우신(Wu Xin) 국내판 휴머노이드 로봇+대형 모델팀이 옷 접기 등 복잡하고 유연한 재료의 작업 작업을 처음으로 완료했습니다. OpenAI 멀티모달 대형 모델을 접목한 Figure01이 공개되면서 국내 동종업체들의 관련 진전이 주목받고 있다. 바로 어제, 중국의 "1위 휴머노이드 로봇 주식"인 UBTECH는 Baidu Wenxin의 대형 모델과 긴밀하게 통합되어 몇 가지 흥미로운 새로운 기능을 보여주는 휴머노이드 로봇 WalkerS의 첫 번째 데모를 출시했습니다. 이제 Baidu Wenxin의 대형 모델 역량을 활용한 WalkerS의 모습은 이렇습니다. Figure01과 마찬가지로 WalkerS는 움직이지 않고 책상 뒤에 서서 일련의 작업을 완료합니다. 인간의 명령을 따르고 옷을 접을 수 있습니다.

산업자동화 기술 분야에서 최근 무시하기 어려운 두 핫스팟이 있는데 바로 인공지능(AI)과 엔비디아다. 원본 콘텐츠의 의미를 바꾸지 말고, 콘텐츠를 미세 조정하고, 콘텐츠를 다시 작성하고, 계속하지 마세요. “그뿐만 아니라 Nvidia가 원래 그래픽 처리 장치(GPU)에만 국한되지 않기 때문에 둘은 밀접하게 관련되어 있습니다. 엔비디아는 최근 GPU를 확장해 디지털 트윈 분야까지 확장하고 있으며, 최근 떠오르는 AI 기술과도 긴밀하게 연결돼 있다”고 말했다. Schneider Electric, Teradyne Robotics, MiR 및 Universal Robots 회사도 포함됩니다. 최근 엔비디아(Nvidia)는

이번 주, 오픈AI(OpenAI), 마이크로소프트(Microsoft), 베조스(Bezos), 엔비디아(Nvidia)가 투자한 로봇 회사인 FigureAI는 약 7억 달러의 자금 조달을 받았으며 내년 내에 독립적으로 걸을 수 있는 휴머노이드 로봇을 개발할 계획이라고 발표했습니다. 그리고 Tesla의 Optimus Prime은 계속해서 좋은 소식을 받았습니다. 올해가 휴머노이드 로봇이 폭발하는 해가 될 것이라는 데는 누구도 의심하지 않는다. 캐나다에 본사를 둔 로봇 회사인 SanctuaryAI는 최근 새로운 휴머노이드 로봇인 Phoenix를 출시했습니다. 관계자들은 이 로봇이 인간과 같은 속도로 자율적으로 많은 작업을 완료할 수 있다고 주장한다. 인간의 속도로 자동으로 작업을 완료할 수 있는 세계 최초의 로봇인 Pheonix는 각 물체를 부드럽게 잡고 움직이며 우아하게 왼쪽과 오른쪽에 배치할 수 있습니다. 자동으로 물체를 식별할 수 있습니다.

쓸고 닦는 로봇은 최근 소비자들 사이에서 가장 인기 있는 스마트 가전제품 중 하나입니다. 그것이 가져오는 조작의 편리함, 심지어 조작이 필요하지 않은 것만으로도 게으른 사람들이 손을 자유롭게 할 수 있게 되어 소비자는 일상적인 집안일에서 "해방"되고 위장된 형태로 삶의 질이 향상됩니다. 이러한 열풍에 힘입어 시중에 나와 있는 거의 모든 가전제품 브랜드가 자체적으로 청소, 물걸레 로봇을 제작하고 있어 전체 청소, 물걸레 로봇 시장이 매우 활발해지고 있습니다. 그러나 시장의 급속한 확장은 필연적으로 숨겨진 위험을 가져올 것입니다. 많은 제조업체가 더 많은 시장 점유율을 빠르게 점유하기 위해 바다의 전술을 사용할 것이며 결과적으로 업그레이드 포인트 없이 많은 신제품이 나올 것이라고도 합니다. '마트료시카' 모델이라고 해도 과언이 아닙니다. 그러나 모든 청소 및 걸레질 로봇이 그런 것은 아닙니다.

눈 깜짝할 사이에 로봇이 마법을 배웠다고? 먼저 테이블 위의 물숟가락을 집어서 관객들에게 아무것도 없다는 것을 증명하는 모습이 보였고... 그리고 달걀 같은 물체를 손에 쥐고 다시 물숟가락을 테이블 위에 올려 놓았습니다. 그리고 "주문을 걸기" 시작했습니다... ...다시 물숟가락을 집었을 때 기적이 일어났습니다. 원래 넣었던 알은 사라지고, 튀어나온 것은 농구공으로 변해버렸는데... 연속적인 동작을 다시 살펴보자: △ 이 애니메이션은 2배속으로 일련의 동작을 보여주며, 보기만 해도 부드럽게 흘러간다. 0.5배속으로 반복해서 영상을 보면, 마침내 단서를 발견했습니다. 내 손의 속도가 더 빨랐다면 적에게 숨길 수도 있었을 것입니다. 일부 네티즌들은 로봇의 마법 실력이 자신보다 훨씬 높다고 한탄했습니다. 이 마법을 우리를 위해 수행한 사람은 매그였습니다.

다음 10가지 휴머노이드 로봇이 우리의 미래를 형성하고 있습니다. 1. ASIMO: Honda가 개발한 ASIMO는 가장 잘 알려진 휴머노이드 로봇 중 하나입니다. 높이 4피트, 무게 119파운드의 ASIMO는 복잡한 환경을 탐색하고 인간과 상호 작용할 수 있는 고급 센서와 인공 지능 기능을 갖추고 있습니다. ASIMO의 다재다능함은 장애인 지원부터 이벤트 프레젠테이션 제공까지 다양한 작업에 적합합니다. 2. 페퍼(Pepper): 소프트뱅크 로보틱스가 만든 페퍼는 인간의 사회적 동반자가 되는 것을 목표로 한다. 표현력이 풍부한 얼굴과 감정을 인식하는 능력을 갖춘 Pepper는 대화에 참여하고, 소매업 환경을 돕고, 교육 지원도 제공할 수 있습니다. 피망

"젤다의 전설: 왕국의 눈물"은 역사상 가장 빨리 팔린 닌텐도 게임이 되었습니다. 조나브 테크놀로지는 다양한 "젤다 크리에이터" 커뮤니티 콘텐츠를 가져왔을 뿐만 아니라 미국 대학의 새로운 공학 과정이 되었습니다. 메릴랜드(UMD). Rewrite: The Legend of Zelda: Tears of the Kingdom은 Nintendo 역사상 가장 빠르게 판매된 게임 중 하나입니다. Zonav Technology는 풍부한 커뮤니티 콘텐츠를 제공할 뿐만 아니라 메릴랜드 대학의 새로운 엔지니어링 과정의 일부가 되었습니다. 올 가을 메릴랜드 대학의 부교수 Ryan D. Sochol은 "
