FB-bot sur js, gupshup

voix
0

Je cherche la solution de problème avec les fonctions d'appel async, en particulier context.simplehttp.makePost(url, param, header);de gupshup api. Je dois envoyer plusieurs messages en séquence concrète.

Voici le code:

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;
  }
 }
}

Mais chaque fois que les messages envoyés dans un ordre aléatoire.

Créé 17/11/2016 à 18:52
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Pour envoyer plusieurs messages dans une séquence concrète, vous devez laisser un appel HTTP terminer son exécution avant de faire le deuxième appel. Il y a deux façons de gérer le comportement asynchrone tout en faisant l'appel HTTP en utilisant l'EDI de la Gupshup -

  1. Utilisez la valeur par défaut HttpResponseHandler. Ce gestionnaire est appelé à chaque fois que l'exécution des finitions d'appel HTTP.

  2. Définissez votre propre fonction de rappel tout en faisant l'appel HTTP. Comme - context.simplehttp.makePost (url, formParams, en- têtes, fonction)

Je recommande d'utiliser la 2ème option car elle rend plus facile à manipuler plusieurs appels HTTP.

Le pseudo-code pour envoyer 3 messages dans une séquence en utilisant le # 2 serait -

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");
}

NOTE - en utilisant context.sendResponse envoie le message et quitter l'exécution de code jusqu'à ce que le message suivant est reçu par le bot.

Pour plus de détails consultez le document de sur gupshup.io

Créé 06/12/2016 à 06:43
source utilisateur

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