FB-bietet auf js, gupshup

stimmen
0

Ich suche nach Lösung des Problems mit Asynchron - Anruffunktionen, vor allem context.simplehttp.makePost(url, param, header);von gupshup api. Ich brauche mehrere Nachrichten in konkreter Folge zu senden.

Hier ist der 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;
  }
 }
}

Aber Nachrichten jedes Mal in zufälliger Reihenfolge senden.

Veröffentlicht am 17/11/2016 um 18:52
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Um Sie mehrere Nachrichten in einer konkreten Sequenz senden müssen einen HTTP-Aufruf lassen beenden, es ist die Ausführung, bevor der zweite Anruf. Es gibt zwei Möglichkeiten, das asynchrone Verhalten zu handhaben, während den HTTP-Anruf des IDE Gupshup mit -

  1. Verwenden Sie den Standard HttpResponseHandler. Diese Prozedur wird jedesmal, wenn die Ausführung der HTTP-Aufruf beendet genannt.

  2. Definieren Sie Ihre eigene Callback - Funktion , während des HTTP - Anruf. Wie - context.simplehttp.makePost (url, formParams, headers, Funktion)

Ich würde empfehlen, die zweite Option, da es macht es einfacher, mehrere HTTP-Anrufe zu handhaben.

Der Pseudocode für das Senden von 3-Nachrichten in einer Folge mit der # 2 würde -

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

HINWEIS - mit context.sendResponse sendet die Nachricht und beenden Sie die Ausführung von Code , bis die nächste Nachricht vom Bot empfangen wird.

Für weitere Informationen überprüfen Sie das aus Dokument auf gupshup.io

Beantwortet am 06/12/2016 um 06:43
quelle vom benutzer

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