ログインしたユーザー「商人」がリンクを作成し、顧客にSMS /電子メールで送信するMeteor Webアプリケーション。リンクがフォームを開きます。多くの商人が多くの顧客に送ることができるので、顧客がフォームを記入して提出すると、データがプロパティmerchantId
で挿入されます。
この1ページのアプリはルータを使用していませんが、SMS /電子メールを送信できます。正しい顧客からのデータが正しいマーチャントに「リンク」されるように、マーチャントと顧客の間でフォームをエレガントに結び付けることができますか?あなたは電子メールの送信に成功した後にトリガすることができますおかげフォームリンクを送って、後でMeteorの送信者に送信
答えて
マーチャント・パート
は/(Record
という名前のこの例では)コレクションで送信される電子メール/ SMSの記録を保存する流星方法を、SMS。これはそれのためのスキーマが考えられます。
のレコードコレクションのスキーマ(サーバ/クライアント)
{
merchantId:String, // the id of the sender
customer:String, //id or name or address or phone num of receiver
opened:Boolean, //when the link is opened can be set to true
link:String, // the link to be send,
type:Number, //0=sms, 1=email,
expires:Date, //in case the link is not opened
}
あなたは、たとえば、送信後にレコードを挿入するために流星のメソッドを作成することができます。
挿入レコード(サーバー)
Meteor.methods({
insertRecord:function(recordData) {
//... check recordData by schmema and permissions here
return Records.insert(recordData);
}
})
S
アプリのマーチャント部がsms/email経由でリンクを送信し、insertRecord
メソッドを呼び出して保存されたレコードを保存します。
レコードを保存(クライアントまたはサーバ)
const callback=function(err, res) {
if (res) { // assume your sent was successful here
Meteor.call("insertRecord", {
//... your record credentials
});
}
}
// a little bit of pseudocode
if (sms)
sms.send(form, callback);
else
email.send(form, callback);
カスタマー・パート顧客は、それはあなたのフォームをレンダリングしますtemplatethatをトリガーするリンクを開く
。 meteorメソッドを実行して、リンクURLと一致するドキュメントのレコードコレクションをチェックすることができます。
のURL方法(サーバー)あなたは、その後にmerchantId
を追加するには、この文書を使用することができます
Meteor.methods({
getRecordByUrl:function(url) {
//... do your input checks here
return Records.findOne({link:url});
},
});
フォームのテンプレート(クライアント)
Template.customerForm.onCreated(function(){
const instance = this;
instance.state = new ReactiveDict();
instance.state.set("record", null);
instance.autorun(function(){
// if no record loaded yet
if (!instance.state.get("record")) {
Meteor.call("getRecordByUrl", window.location.href, function(err, res) {
if (err || !res) {
//...handle err
}
this.state.set("record", res);
}.bind(instance));
}
});
});
Template.customerForm.helpers({
getRecord() {
return Template.instance().state.get("record");
},
getMerchantId() {
const record = Template.instance().state.get("record");
return record.merchantId;
}
});
でレコードを取得フォームは隠し入力またはHTMLデータ属性のいずれかとなります。
{{#if getRecord}}
<form id="...">
<input type="hidden" name="merchantId" value="{{getMerchantId}}" />
<!-- other inputs here -->
</form>
{{/if}}
例はもちろん最適化することができますが、私はこれを理解することがより明確になると思います。
マーチャントが 'www.company.com/customerPhoneNumber'のようなフォームURLを送信した場合、customerPhoneNumber onRenderedを取得して条件付きテンプレートヘルパーを使用して特定のフォームを開き、後でそのデータを送信することができます送信時に顧客から返信されますか? –
ルータを使用していない場合は、手動で 'window.location.href'を処理します。 – Jankapunkt
- 1. 送信フォームのデータを送信者のメールアドレスに送信
- 2. C#how out送信の送信者フィールド
- 3. Javamail受信メール返送メールとして送信者に返信
- 4. 送信後に電子メールを送信
- 5. ...送信者
- 6. なぜ代わりに(UIButton *)の(ID)、送信者、送信者
- 7. 送信者をeventargとして送信するには
- 8. JavaScriptの送信者
- 9. 送信者名送信者アドレスとの差異Oracle SMTP
- 10. chrome.tabs.sendMessageは、送信者
- 11. キャスト送信者パラメータ
- 12. IBAction送信者タイプ
- 13. uibutton送信者タグ
- 14. phpメール送信者
- 15. ブロードキャスト送信者と受信者のペア
- 16. Magento - 連絡フォームから送信者にメッセージのコピーを送信
- 17. PHPサーバー送信イベント - メッセージ送信者と受信トレイ
- 18. カスタム封筒送信者(VERP)でメールを送信
- 19. 受信者なしで複数の受信者にメールを送信他のユーザーに送信する
- 20. なぜ "(UIButton *)送信者"で、 "UIButton *送信者"ではないのですか?
- 21. Meteor HTTP GETリクエストでデータを送信
- 22. Meteor AndroidアップロードデータURIをAmazon S3に送信
- 23. Node.js - 送信後にヘッダーを送信できない
- 24. Postfix/Spamassassin:送信者に返信された未送達メール
- 25. Akkaラウンドロビン:リモートルートから送信者への応答の送信
- 26. Outlook自動転送は、転送者ではなく元の送信者に返信を設定します
- 27. MPI_Request - 送信者を取得
- 28. 送信者の名前でoracleを使用して電子メールを送信
- 29. Mailを使用してメールを送信できません:perlの送信者
- 30. 未来の送信者
あなたのフロントエンドは何ですか?燃える、反応する、角度、ビュー – Jankapunkt
また、顧客は流星群のアプリケーションでフォームを再び開いていますか? – Jankapunkt
Blazeでの標準的な流星のインストール、私はあなたの2番目の質問を完全に理解しているかどうかはわかりません。 –