2017-11-30 6 views
1

私はある人に詳細を記入し、詳細の概要を返そうとしています。会話を再開するオプションがありますが(コードを見てください)、会話が再開されて新しい詳細が記入されると、最初に記入された詳細の古い詳細が表示されます。再起動後に詳細が記入されます。

この問題を解決するにはどうすればよいですか?

bot.dialog('overview', function (session, options) { 
if (session.message && session.message.value) { 
    if(session.message.value.actions == "Accept"){ 

    } 
    return; 
} 
var overview_msg = require('./cards/overview.json'); 
var date = new Date(); 
overview_msg.attachments[0].content.body[0].items[1].columns[1].items[0].text = overview_msg.attachments[0].content.body[0].items[1].columns[1].items[0].text.replace(/{{name}}/,nameGuest) 
overview_msg.attachments[0].content.body[0].items[1].columns[1].items[1].text = overview_msg.attachments[0].content.body[0].items[1].columns[1].items[1].text.replace(/{{date}}/,date.toDateString() +' ' + date.toLocaleTimeString()); 
overview_msg.attachments[0].content.body[1].items[1].facts[0].value = overview_msg.attachments[0].content.body[1].items[1].facts[0].value.replace(/{{email}}/, mailGuest); 
overview_msg.attachments[0].content.body[1].items[1].facts[1].value = overview_msg.attachments[0].content.body[1].items[1].facts[1].value.replace(/{{phone}}/, phoneGuest); 
overview_msg.attachments[0].content.body[1].items[1].facts[2].value = overview_msg.attachments[0].content.body[1].items[1].facts[2].value.replace(/{{extra}}/, numberPeople); 

overview_msg.attachments[0].content.body[1].items[1].facts[3].value = overview_msg.attachments[0].content.body[1].items[1].facts[3].value.replace(/{{lunch}}/, lunchGuest); 
overview_msg.attachments[0].content.body[1].items[1].facts[3].value = overview_msg.attachments[0].content.body[1].items[1].facts[3].value.replace(/{{allergy}}/, lunchAllergyGuest); 
overview_msg.attachments[0].content.body[1].items[1].facts[3].value = overview_msg.attachments[0].content.body[1].items[1].facts[3].value.replace(/{{vegan}}/, lunchVegan); 
session.send(overview_msg); 

bot.dialog('restart', function (session) { 
    session.beginDialog('overview'); 
}).triggerAction({matches: /restart|quit/i}); 
+0

方法などnameGuest、mailGuest、phoneGuestは、人口ですか? –

+0

これらは空の文字列を含むローカル変数です。私はそれらを再利用する必要があるので。 – KHaemels

答えて

0

を私はそれを成し遂げることができました。 jsonの値を置き換える代わりに、変数を参照しました。

例:

overview_msg.attachments[0].content.body[1].items[1].facts[0‌​].value = VARIABLE 
0

私はそれはあなたがあなたのコードスニペットに示されていない変数をnameGuest, mailGuest, phoneGuest, etc定義する方法に関するものであってもよいと思います。

adaptive-cardInput.Textから値を取得するために、次のコードスニペット試すことができます:はい

bot.dialog('form', [ 
    (session, args, next) => { 
     let card = require('./card.json'); 
     if (session.message && session.message.value) { 
      next(session.message.value) 
     } else { 
      var msg = new builder.Message(session) 
       .addAttachment(card); 
      session.send(msg); 
     } 

    }, 
    (session, results) => { 
     // Get the User input data here 
     session.send(JSON.stringify(results)); 

    } 
]).triggerAction({ 
    matches: ['form', 'Action.Submit'] 
}) 
+0

これらは空の文字列を含むローカル変数です。私のコードにも変数が必要です。しかし、なぜアダプティブカードは私に古い値を示していますか?私は必要なカードを再利用するので、通常これは空ですか?ではない ? – KHaemels

+0

私はこれらの文が 'overview_msg.attachments [0] .content.body [1] .items [1] .facts [0] .value = overview_msg.attachments [0] .content.body [1] .items [ 1] .facts [0] .value.replace(/ {{email}} /、mailGuest); 'はカードのjson文字列に影響を与え、' mailGuest'のような変数には何らかの値が割り当てられます。 'session.send(msg)'の前にブレークポイントを設定して、コードの正確な値を確認することをお勧めします。 –

+0

@KHaemels、any updates yet? –

関連する問題