Heim  >  Artikel  >  WeChat-Applet  >  C# entwickelt das WeChat-Portal und wendet die Nachrichtenverwaltung für öffentliche Kontovorlagen an

C# entwickelt das WeChat-Portal und wendet die Nachrichtenverwaltung für öffentliche Kontovorlagen an

高洛峰
高洛峰Original
2017-03-07 10:14:421993Durchsuche

Über die Vorlagennachrichtenschnittstelle können öffentliche Konten voreingestellte Vorlagennachrichten an Benutzer senden, die ihren Konten folgen. Vorlagennachrichten werden nur von offiziellen Konten verwendet, um wichtige Servicebenachrichtigungen an Benutzer zu senden, und können nur in Serviceszenarien verwendet werden, die ihren Anforderungen entsprechen, z. B. Benachrichtigungen über Kreditkartenabbuchungen, Benachrichtigungen über den Erfolg von Produktkäufen usw. Marketingnachrichten wie Werbung und alle anderen Nachrichten, die Benutzer belästigen könnten, werden nicht unterstützt. In diesem Artikel wird hauptsächlich die Entwicklung und Implementierung von Nachrichtenverwaltungsfunktionen für öffentliche Kontenvorlagen basierend auf C# vorgestellt.

„Die Einführung der Vorlagennachrichtenfunktion wird die Servicebenachrichtigungsfunktionen von Dienstkonten erheblich verbessern.“ In den Augen einiger öffentlicher Kontobetreiber, die sich auf die Eröffnung der Vorlagennachrichtenfunktion von WeChat gefreut haben, ist das Social Eigenschaften der Eins-zu-Eins-Kommunikation von WeChat: Dadurch wird die Reichweite des Informations-Pushs genauer, was Unternehmen auch viele Vorteile in Bezug auf Kosten, Serviceeffizienz und Leistung verschafft. Es bereichert nicht nur die Serviceformen des Unternehmens, sondern verbessert auch die Benutzerinteraktion Klebrigkeit, sondern bringt den Benutzern auch ein vielfältigeres, reichhaltigeres und zeitgemäßeres Serviceerlebnis.

1. Branchenklassifizierungsverwaltung und Beschreibung von Vorlagen

Vorlageninformationen sind nach Branchen unterteilt, und verschiedene Vorlagen werden entsprechend unterschiedlichen Nutzungsszenarien entworfen Benachrichtigungen über eine erfolgreiche Registrierung finden Sie unter Vorlagen, die in verschiedenen Szenarien verwendet werden können, z. B. Zimmererinnerungen, Bestellerinnerungen, Mitgliederaufladungen und Mitgliederverbrauchsbenachrichtigungen.

C#开发微信门户及应用公众号模板消息管理

Wenn unser öffentliches Konto Vorlagen verwenden muss, müssen wir die erforderlichen Vorlagen aus der Vorlagenbibliothek hinzufügen (das aktuelle Limit beträgt 15). Nachdem die Vorlage zu meiner Vorlage hinzugefügt wurde, generiert jede Vorlage einen Zufallswert, nämlich [Vorlagen-ID]. Wenn wir Informationen senden, senden wir sie entsprechend dieser Vorlagen-ID.

C#开发微信门户及应用公众号模板消息管理

Jede Vorlage verfügt über detaillierte Parameterbeschreibungen und Beispieleffekte.

C#开发微信门户及应用公众号模板消息管理

Der zuständige Verantwortliche des WeChat-Teams sagte: Das Öffnen von Vorlagennachrichten dient hauptsächlich dazu, öffentliche Konten bei der Vervollständigung geschlossener Dienstleistungen zu unterstützen Senden Sie proaktiv Nachrichten (monatlich können vier Nachrichten in Gruppen gesendet werden), was viele Unternehmen daran hindert, proaktive Benachrichtigungen über Serviceergebnisse und andere Informationen an Benutzer zu senden. Nachdem die Vorlagennachricht geöffnet wurde, können Unternehmen die WeChat-Plattform verwenden, um mithilfe von Vorlagennachrichten bei externen Diensten und internen Verwaltungsprozessen schneller auf Informationen zuzugreifen und Benutzern durchdachtere Dienste bereitzustellen.

WeChat hat das Benutzererlebnis kontinuierlich optimiert. Durch das Öffnen von Vorlagennachrichten stehen Unternehmen grundlegendere Funktionen wie umfassendere wechselseitige Interaktionen, genauere Informationserinnerungen usw. zur Verfügung, die die Qualität verbessert haben Unternehmen, die Tiefe und Breite personalisierter Dienste, weshalb Institutionen und Unternehmen in den Bereichen Finanzen, Zivilluftfahrt, Regierungsangelegenheiten und anderen Bereichen gespannt darauf sind, dass WeChat die Template-Messaging-Funktion einführt. In Zukunft können mit der weiteren Verbesserung der Vorlagennachrichtenfunktion möglicherweise Gehaltsdetails von Firmenmitarbeitern, monatlicher Stromverbrauch im Haushalt, Stromrechnungen und andere Details zum Stromverbrauch sowie sogar der Ablauf und die Notwendigkeit eines Führerscheins usw. offengelegt werden an die Öffentlichkeit über WeChat von Unternehmen und Abteilungen. Die Vorlagenachricht des Kontos wird sofort an den entsprechenden Benutzer übermittelt.

2. Vorlagennachrichten für die Entwicklung verwenden

Die relevanten Informationen zu Vorlagen und der Einführung einzelner Vorlagen wurden bereits eingeführt. Wenn wir das Senden von Vorlagennachrichten in das Hintergrundprogramm integrieren müssen, dann Sie müssen die Vorlage verstehen. Was sind die Messaging-APIs? Wie verwende ich die Vorlagennachrichten-API zum Senden von Nachrichten?

Werfen wir zunächst einen Blick auf die Anweisungen zur Verwendung von Vorlagennachrichten:

1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用15个模板。
5、当前每个模板的日调用上限为10万次【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。

Die Verwaltungsfunktionen von Vorlagennachrichten sind:

 1 Legen Sie die Branche fest
 2 Holen Sie sich die Vorlagen-ID
 3 Senden Sie eine Vorlagennachricht
 4 Ereignis-Push

2.1 Legen Sie die Branche fest

Das Festlegen der Branche kann in MP abgeschlossen werden, und die Die Branche kann einmal im Monat geändert werden. Das Konto kann nur relevante Vorlagen in der Branche verwenden, zu der es gehört. Um Drittentwicklern die Möglichkeit zu geben, die Branche, zu der das Konto gehört, über Schnittstellenaufrufe zu ändern :

Anweisungen zur Anforderung von Schnittstellenaufrufen

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=ACCESS_TOKEN

POST-Datenbeschreibung

Beispiel für POST-Daten lautet wie folgt:

      {
          "industry_id1":"1",
          "industry_id2":"4"
       }

Gemäß der Beschreibung können wir eine Schnittstellenklasse ITemplateMessageApi definieren und dann Die Schnittstellenfunktion, die die Branche definiert und festlegt, lautet wie folgt:

        /// <summary>
        /// 设置所属行业        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="industry_id1">公众号模板消息所属行业编号(主营行业)</param>
        /// <param name="industry_id2">公众号模板消息所属行业编号(副营行业)</param>
        /// <returns></returns>
        CommonResult SetIndustry(string accessToken, IndustryCode industry_id1, IndustryCode industry_id2);

Der Einfachheit halber definieren wir IndustryCode als Aufzählungsobjekt, das das System auflistet. Alle unterstützten Branchencodes sind unten aufgeführt.

C#开发微信门户及应用公众号模板消息管理

而实现代码和之前的函数处理类似,都是POST数据到一个连接即可,并解析返回的结果就可以了,具体实现代码如下所示。

/// <summary>
        /// 设置所属行业
        /// </summary>
        /// <param name="accessToken">访问凭证</param>
        /// <param name="industry_id1">公众号模板消息所属行业编号(主营行业)</param>
        /// <param name="industry_id2">公众号模板消息所属行业编号(副营行业)</param>
        /// <returns></returns>
        public CommonResult SetIndustry(string accessToken, IndustryCode industry_id1, IndustryCode industry_id2)
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token={0}", accessToken);
            var data = new
            {
                industry_id1 = (int)industry_id1,
                industry_id2 = (int)industry_id2
            };
            string postData = data.ToJson();

            return Helper.GetExecuteResult(url, postData);
        }

2.2 获得模板ID

获得模板ID,也就是从模板库里面添加对应的模板消息到我的模板里面。

从行业模板库选择模板到账号后台,获得模板ID的过程可在MP中完成。为方便第三方开发者,提供通过接口调用的方式来修改账号所属行业,具体如下:

接口调用请求说明

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:

      {
           "template_id_short":"TM00015"
       }

C#函数实现代码如下所示:

/// <summary>
        /// 获得模板ID.
        /// 从行业模板库选择模板到账号后台,获得模板ID的过程可在MP中完成。
        /// </summary>
        /// <param name="accessToken">访问凭证</param>
        /// <param name="template_id_short">模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式</param>
        /// <returns></returns>
        public AddTemplateResult AddTemplate(string accessToken, string template_id_short)
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token={0}", accessToken);
            var data = new
            {
                template_id_short = template_id_short
            };
            string postData = data.ToJson();

            return JsonHelper<AddTemplateResult>.ConvertJson(url, postData);
        }

2.3 发送模板消息

根据上面小节处理,添加到我的模板里面的操作得到的模板ID,我们就可以调用发送模板消息的API进行模板消息发送了。

接口调用请求说明

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:

      {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",
           "topcolor":"#FF0000",
           "data":{
                   "first": {
                       "value":"恭喜你购买成功!",
                       "color":"#173177"
                   },
                   "keynote1":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "keynote2": {
                       "value":"39.8元",
                       "color":"#173177"
                   },
                   "keynote3": {
                       "value":"2014年9月16日",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"欢迎再次购买!",
                       "color":"#173177"
                   }
           }
       }

根据上面的JSON参数,我们可以看到,有部分是模板消息公共的部分,有部分则是模板消息的具体参数,这些参数需要根据不同的模板进行不同的赋值。

如这部分是共同的:

   touser":"OPENID",
   "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
   "url":"http://weixin.qq.com/download",
   "topcolor":"#FF0000",

根据这个特点,我们定义发送模板消息的接口如下所示:

/// <summary>
        /// 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。
        /// 不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
        /// </summary>
        /// <param name="accessToken">访问凭证</param>
        /// <param name="openId">账号的openID</param>
        /// <param name="templateId">在公众平台线上模板库中选用模板获得ID</param>
        /// <param name="data">模板的变化参数数据</param>
        /// <param name="url">,URL置空,则在发送后,点击模板消息会进入一个空白页面(ios),或无法点击(android)。</param>
        /// <param name="topcolor">顶部颜色,默认为#173177</param>
        /// <returns></returns>
        SendMassMessageResult SendTemplateMessage(string accessToken, string openId, string templateId, object data, string url, string topcolor = "#173177");

我们用object data来定义模板的变化参数数据。

具体的实现还是和前面的方法提交数据处理差不多,代码如下所示。

/// <summary>
        /// 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。
        /// 不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="accessToken">访问凭证</param>
        /// <param name="openId"></param>
        /// <param name="templateId">在公众平台线上模板库中选用模板获得ID</param>
        /// <param name="data"></param>
        /// <param name="url">,URL置空,则在发送后,点击模板消息会进入一个空白页面(ios),或无法点击(android)。</param>
        /// <param name="topcolor"></param>
        /// <returns></returns>
        public SendMassMessageResult SendTemplateMessage(string accessToken, string openId, string templateId, object data, string url, string topcolor = "#173177")
        {
            var postUrl = string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", accessToken);
            var msgData = new TemplateData()
            {
                touser = openId,
                template_id = templateId,
                topcolor = topcolor,
                url = url,
                data = data
            };
            string postData = msgData.ToJson();

            SendMassMessageResult result = JsonHelper<SendMassMessageResult>.ConvertJson(postUrl, postData);
            return result;
        }

发送模板的消息相对其他两个接口的使用复杂一些,例如我以一个会员通知的模板消息为例,模板的详细情况如下:

C#开发微信门户及应用公众号模板消息管理

具体的测试代码如下所示。

#region 发送模板消息

            var data = new
            {
                //使用TemplateDataItem简单创建数据。
                first = new TemplateDataItem("您好,您已成为微信【广州爱奇迪】会员。"),
                type = new TemplateDataItem("18620292076"),
                address = new TemplateDataItem("广州市白云区广州大道北"),
                VIPName = new
                {
                    //使用new 方式,构建数据,包括value, color两个固定属性。
                    value = "伍华聪",
                    color = "#173177"
                },
                VIPPhone = new TemplateDataItem("18620292076"),
                expDate = new TemplateDataItem("2016年4月18日"),
                remark = new TemplateDataItem("如有疑问,请咨询18620292076。", "#173177"),
            };

            #endregion
            string url = "http://www.iqidi.com";
            string topColor = "#173177";

            string templateId = "-5LbClAa9KUlEmr5bCSS0rxU_I2iT16iYBDxCVU1iJg";
            SendMassMessageResult sendResult = api.SendTemplateMessage(token, openId, templateId, data, url, topColor);
            if(sendResult != null)
            {
                Console.WriteLine(sendResult.msg_id);
            }

那么我们得到的提示效果如下所示。

C#开发微信门户及应用公众号模板消息管理

微信模板消息,能够让我们与客户之间沟通不受每月几条数量的限制,同时也能够利用微信模板库丰富的内容,实现强大的应用场景。

更多C#开发微信门户及应用公众号模板消息管理 相关文章请关注PHP中文网! 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn