FB-bot για js, gupshup

ψήφοι
0

Ψάχνω για λύση του προβλήματος με τις λειτουργίες ασύγχρονη κλήση, κυρίως context.simplehttp.makePost(url, param, header);από gupshup api. Πρέπει να στείλει πολλαπλά μηνύματα στη συγκεκριμένη σειρά.

Εδώ είναι ο κώδικας:

function MessageHandler(context, event) {
if (event.messageobj.type == msg) {
if (Array_CH(hi_array, message)) {
var contextParam = JSON.stringify(event.contextobj);
var url = https://api.gupshup.io/sm/api/bot/ + event.botname + /msg;
var param = context= + contextParam + &message=;
var header = { apikey: b3843dad0a484ad3ca19b5358be6c809, Content-Type: application/x-www-form-urlencoded };
var catalogue;
var button;
var param1;
param = context= + contextParam + &message=Hey.\nContest called The vivid Emotions needs your assessment.\nLook what emotions here. Do you agree?\nOr are your feelings totally different?;
context.simplehttp.makePost(url, param, header);
catalogue = {
            type: catalogue,
            msgid: cat_212,
            items: [
                {
                    title: Design1,
                    subtitle: Quisque consectetur ornare malesuada.\n Nunc dapibus nec felis.,
                    imgurl: http://sv777.ru/images/stati/239465865852987356diz.jpg,
                    options: [
                        {
                            type: url,
                            title: About,
                            url: http://laminat-parket.net/product/room-yasen-dizajn
                        }
                    ]
                },
                {
                    title: Design2,
                    subtitle: Donec purus sem, mollis a fermentum sit amet, pretium sed lectus.\n Ut at mattis purus.,
                    imgurl: http://laminat-parket.net/upload/productions/55794d8198b65.jpg,
                    options: [
                        {
                            type: url,
                            title: About,
                            url: http://laminat-parket.net/product/room-yasen-dizajn
                        }
                    ]
                },
                {
                    title: Design3,
                    subtitle: Proin nec turpis leo.\n Nam metus augue, aliquam vitae laoreet sed, dignissim a risus.,
                    imgurl: http://www.askwallpapers.com/pic/201502/2880x1800/askwallpapers.com-17168.jpg,
                    options: [
                        {
                            type: url,
                            title: About,
                            url: http://laminat-parket.net/product/room-yasen-dizajn
                        }
                    ]
                },
                {
                    title: Design4,
                    subtitle: Phasellus vitae justo sed velit faucibus hendrerit.\n Aenean scelerisque eros ac tortor tincidunt feugiat.,
                    imgurl: http://www.kidsworldstudio.net/wp-content/uploads/2015/11/bunk-bed-plans-for-kids-bedroom-ideas-home-interior-design-3353-loft-bed-for-kids-loft-bed-for-kids1.jpg,
                    options: [
                        {
                            type: url,
                            title: About,
                            url: http://laminat-parket.net/product/room-yasen-dizajn
                        }
                    ]
                },
                {
                    title: Design5,
                    subtitle: Pellentesque risus nibh, porttitor vitae diam ut, facilisis aliquet velit.\n Quisque scelerisque massa urna. ,
                    imgurl: http://www.wallpaper4k.com/download.php?res=interior%2FWP67USXQ.jpg,
                    options: [
                        {
                            type: url,
                            title: About,
                            url: http://laminat-parket.net/product/room-yasen-dizajn
                        }
                    ]
                }
            ]
        };
button = {
            msgid: bt_2,
            type: survey,
            question: Put your Like and change this rating!,
            options: [
                {
                    type: url,
                    title: Yes,
                    url: http://www.wallpaper4k.com/uk/wallpapers/interior%20design/wp67usxq.html,
                    webview_height_ratio: full
                },
                {
                    type: url,
                    title: Add your own project,
                    url: http://www.wallpaper4k.com/uk/wallpapers/interior%20design/wp67usxq.html,
                    webview_height_ratio: full
                },
                {
                    type: text,
                    title: Need own bot?,
                }
            ]
        };
param = context= + contextParam + &message= + JSON.stringify(catalogue);
param1 = context= + contextParam + &message= + JSON.stringify(button);
context.simplehttp.makePost(url, param, header);
context.simplehttp.makePost(url, param1, header);
return;
  }
 }
}

Αλλά μηνύματα κάθε φορά που στέλνετε σε τυχαία σειρά.

Δημοσιεύθηκε 17/11/2016 στις 18:52
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Για να στείλετε πολλαπλά μηνύματα σε μια συγκεκριμένη ακολουθία θα πρέπει να αφήσετε μια κλήση HTTP τελειώσει είναι η εκτέλεση πριν από την πραγματοποίηση της δεύτερης κλήσης. Υπάρχουν δύο τρόποι για να χειριστεί την ασύγχρονη συμπεριφορά, ενώ κάνει την κλήση HTTP χρησιμοποιώντας IDE του Gupshup του -

  1. Χρησιμοποιήστε το προεπιλεγμένο HttpResponseHandler. Αυτό χειριστής καλείται κάθε φορά που η εκτέλεση των τελειωμάτων κλήση HTTP.

  2. Καθορίστε τη δική σας λειτουργία επανάκλησης κάνοντας την κλήση HTTP. Όπως - context.simplehttp.makePost (url, formParams, κεφαλίδες, λειτουργία)

Θα ήθελα να συστήσω χρησιμοποιώντας την 2η επιλογή, καθώς είναι πιο εύκολο να χειριστεί πολλαπλές κλήσεις HTTP.

Ο κώδικας ψευδο για την αποστολή 3 μηνύματα σε μια ακολουθία χρησιμοποιώντας το # 2 θα είναι -

function MessageHandler(context, event) {
  context.simplehttp.makePost(url, formParams, headers, secondMsg); 
//sending 1st message
}
function secondMsg(event,context){
    context.simplehttp.makePost(url, formParams, headers, thirdMsg); //sending 2nd message
}
function thirdMsg(event,context){
    context.sendResponse("I am the last message");
}

ΣΗΜΕΙΩΣΗ - χρησιμοποιώντας context.sendResponse στέλνει το μήνυμα και να βγείτε από την εκτέλεση κώδικα μέχρι το επόμενο μήνυμα έχει ληφθεί από το bot.

Για περισσότερες λεπτομέρειες δείτε το έγγραφο για gupshup.io

Απαντήθηκε 06/12/2016 στις 06:43
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more