文書に基づいて、「NET コアアプレットはゼロベースシリーズ(1)開発-開発者を有効にして、手の成功を確認するために、」個人的な効果は非常に良いと感じ、反映し、我々はまだ、公共の数字の開発のための大きな需要を持っています同時に、学生はまた、多くの問題を受けて、私はそれが簡単に誰もが数を通して食べるために作る、実際の記事をゆっくりと戻って表示されます。特別な感謝盛も、サポートのコミュニティの首長の支援のおかげでSenparcを送信するだけでなく、私の6つのジュニアパートナーサポートに感謝したいと、私たちは、リソースの共有をすべての質問にお答えします。
盛は繰り返しアップグレード、公的支援の基本的にすべての機能番号を変更し、彼らは研削の年後であるため、それは、本当に速い発展のためSenparcオープンソースのフレームワークを送ったが、多くの学生が残っていることがわかった基本原則と枠組みを理解していないのはなぜ私たちは本当の本物のアイテムの少しに食われるの設計、。
騒ぎ、我々は^ _ ^ドライ、アップ袖をロールアップ、ああ限界を突破することができます良いテンプレートのメッセージを持っていた、第二に対抗開始します
テンプレートのメッセージを見てください
マイクロチャネル通知書に基づいて、我々は、閉ループサービスを実現し、より良い体験を提供するために、開発者のためのユーザーテンプレートのメッセージング機能の効率的な接触を提供することができます。
ここでテンプレートをプッシュ:サービス通知
テンプレート作られた条件の下で:ページと対話した後に、ユーザー自身の行動をマイクロチャネルシステム内でトリガした、参照の 条件の下で髪を説明
テンプレートに能力を移動:のみ各ページのアカウントのテンプレートを発行ジャンプすることができます詳細はこちら
効果はのようになります。
複数のドキュメントの公式ルールを参照してください。
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html
追加の経験が示しています。
あなたの会社が運用スタッフを持っている場合は、サービス通知の非常に好きになり、それはすぐにサービス番号に排水、アプレットは、現在のユーザーをアクティブにします。マイクロチャネル通知サービスでは、我々はあまりにも懸念touchを達することができるようになり、サービス番号、人々のアプレットを許可していた、それは素晴らしいではありません。
シーンは:例えば、ユーザは、小さなプログラムは、100人が活動を申し込むリリースします。あなたは1つのアプリケーションがあると認識することができた場合、それはイニシエータの活動への登録通知を送信し、それが大幅にアプリケーションに関与しているユーザーの人数を確認するための小さなプログラムを開くには、それぞれの時間を後援していない、ツールの効率を改善します。明らかに、現在のメッセージ配信機構は、この需要を満たすことはできません。
多くのテンプレートには、各産業が同じテンプレート、テンプレート、当社電気事業システムなど、「注文支払故障通知」「成功の予定通知」「受注出荷通知」「成功した支払指図書の通知」を必要としていない、少しあります。 「ユーザー認証通知」などのテンプレートに。
あなたは、テンプレート/テンプレート設定を作成したいです
示すように、左の「メッセージテンプレート」をクリックして、楽屋アプレットログイン:
デフォルトの「マイテンプレートライブラリ」はテンプレートではないテンプレートライブラリのテンプレートが非常に大きい示したように、あなたが作成した「テンプレートライブラリ」を入力する必要があり、それは、あなたがしたいテンプレートを探してお勧めします。
示すように、選択をクリックし、該当するテンプレートを選択します。
注:配置、そうでない場合は、データ障害の問題を選択するリストに戻る私たちのための順序に厳密に従って、ここで「キーワード」を追加します。
テンプレート、構成テンプレート、私たちは本当にそれを送信し、次のテンプレートの基本的な理解を超えています!
コレクションフォームID(テンプレートメッセージを破るリミットプッシュ?)
テンプレートを送信するために人間のフォームIDに対応する小さなプログラムを送信する必要があり、またはあなたが失敗した送信しているので、なぜ、それを収集するためにここにフォームID。
フォームIDの収集方法は、我々は直接テンプレートメッセージを破り、収集の複雑さを制限するためにプッシュを話しています。
プロセス
フォームID ==を収集するために、バッチプログラムのための小型のフロントエンド・インターフェースと組み合わせることでフォームID ==「テンプレート、7日、ユーザーがユーザーをアクティブに触れたテンプレートメッセージを行うための最後の一押しを送っメモリ「==をバックに報告」。
実装手順
図1は、アプレット構築フォームIDプール、ユーザによって送信されたフォームは、フォームIDプール、懸濁アプレットに一緒に集められるたびに、ユーザは、または離れて遠位端から収納位置まで後方伝送formIdsを動作させます。
ユーザーが操作のボタンをクリックすると2、ユーザーは、目に見えないボタンカバーアプレット領域と、formタグ内の送信フォームIDページボタンのパッケージ全体をクリックして、フォームIDを取得しますプールにフォームID。
コード・プログラムのごく一部
図1に示すように、第一のフォームIDの配列を定義
2、アプレットページ定義イベント
3、イベントを提出
4、背景、バルクコレクションに提出フォームID
基本的なプロセスは、フォームIDよりも多くを収集することで、そこの原則を理解していないと実装手順は、私に連絡することができます。
メッセージテンプレートを送信します(サービス通知)
还是上一篇那个项目,如图:
引用盛派Senparc组件:
Senparc.Weixin.MP.MVC
Senparc.Weixin.WxOpen
批量发送模板主要代码:
HashEntry[] hashes = redisManager2.HashValueAll(videoKey); if (hashes.Length > 0) { Console.WriteLine($"{QUEUE_ROOMVISIRECORD},直播间{videoKey},准备推送人数{hashes.Length},videoKey={videoKey},videoKeywords={videoKeywords}"); foreach (var item in hashes) { //{"WorkQueueNo":"wxccf5524125d67d16","TemplateID":"KgI11LMjGCUmvrfOPG5xHdfW2j70tJKNurfrtAFn9sk","Keywords":"2019-08-25 21:54:00|安|fffd|快来我的直播间,约起!","Url":"pages/live/liveRoom/liveRoom?id=1164536425702625280","ToOpenID":"o5D-a5QpNoC_0QYF5C-zFbmkgr4Q","ToMemberID":1053} WorkQueueParam valueItem = DMS.Common.Extensions.SerializerExtensions.DeserializeObject<WorkQueueParam>(item.Value); if (valueItem != null) { //查找小程序的fromid string key = $"{valueItem.ToMemberID}_{valueItem.WorkQueueNo}"; string fromid = redisManager3.ListLeftPop<string>(key); if (!string.IsNullOrEmpty(fromid)) { string[] keywords = videoKeywords.Split("|"); var data = new { keyword1 = new TemplateDataItem(keywords[0]), keyword2 = new TemplateDataItem(keywords[1]), keyword3 = keywords.Length > 2 ? new TemplateDataItem(keywords[2]) : null, keyword4 = keywords.Length > 3 ? new TemplateDataItem(keywords[3]) : null, }; var tempResult = Senparc.Weixin.WxOpen.AdvancedAPIs.Template.TemplateApi.SendTemplateMessage(valueItem.WorkQueueNo, valueItem.ToOpenID, valueItem.TemplateID, data, fromid, videoUrl); if (tempResult.errcode == ReturnCode.请求成功) { Console.WriteLine($"{QUEUE_ROOMVISIRECORD},直播间{videoKey},发送成功,{valueItem.ToMemberID}"); } else { Console.WriteLine($"{QUEUE_ROOMVISIRECORD},直播间{videoKey},发送失败,{tempResult.errmsg}"); } } else { Console.WriteLine($"{QUEUE_ROOMVISIRECORD},直播间{videoKey},获取FromID为空,{valueItem.ToMemberID}"); } } else { Console.WriteLine($"{QUEUE_ROOMVISIRECORD},直播间{videoKey},模板内容序列哈异常"); } } } else { Console.WriteLine($"{QUEUE_ROOMVISIRECORD},直播间{videoKey},未找到直播间数据"); }
这里的场景是这样的:比如一个主播她创建了一个房间,设定开播的时间为某一天,为了给自己引流,他在微信群分享了小程序,这时只要有人点击了小程序链接点击预约就会记录与主播的关联,等到主播开播时,会群发下面预约的用户。是不是有点像群发功能,哈哈,大家有空可能尝试一下。
注:这里利用了redis来存储fromid,你们也可以用其它的方式来存储,随便你来玩。
总结
人个觉得代码实现需求的过程并不复杂,主要是理解了原理与实现的过程后,就事半功倍。整个方案流程涉及到的关键词有表单、按钮、formId、模板消息、Redis等,主要需要前后端相关技术组合来实现整个方案。
作者:Dylan
公众号:dotNET名人堂(sharecore)
微信:tangguo_9669
QQ:.NET Core 技术交流(18362376)
出处:https://blog.csdn.net/hailang2ll