nodejs Facebook Chat bot z Apiaí

głosy
1

Mam pytanie na temat radzenia sobie z bogatych wiadomości na Facebooku.

Gdy próbuję wysłać wiadomości z api.ai,

I wysłać wiadomość jak wejść Opis Link tutaj

function MessageHandler(event) {
  let sender = event.sender.id;
  let text = event.message.text;
//apiai text request
  let apiai = apiaiApp.textRequest(text, {
    sessionId: 'MY_HOSTETTER' // use any arbitrary id
  });

//get reponse from apiai
  apiai.on('response', (response) => {
    let apiaiText = response.result.fulfillment.speech;
    //let apiaiType = response.result.fulfillment.type;
    var apiaiMessages = response.result.fulfillment.messages;
    //response from agent or domain
    if(response.result.source == 'agent'){
      for(let i=0;i<apiaiMessages.length;i++){
        let amessage=apiaiMessages[i];
        let replymessage = null;
        //response from apiai agent
        //which type of response get
        switch(amessage.type){
          case 0 :
            //0 is text message
            console.log(ITS TEXT MESSAGE);
            replymessage = TextMessage(event, amessage);
            break;
          case 1 :
            //1 is card message
            console.log(ITS CARD MESSAGE);
            replymessage = CardMessage(event, amessage);
            break;
          case 2 :
            //2 is quick reply
            console.log(ITS QUICK REPLY);
            replymessage = QuickReply(event, amessage);
            break;
          case 3 :
            //3 is image mesaage
            console.log(ITS IMAGE MESSAGE);
            replymessage = ImageMessage(event, amessage);
            break;
          case 4 :
            //4 is custom payload
            console.log(ITS CUSTOM PAYLOAD);
            console.log(amessage.payload);
            replymessage = amessage.payload;
            break;
        }
        sendFBmessage(event, replymessage);
       }
    }else{
      //handling domain response
      console.log(ITS DOMAIN SAYING);
      replymessage = TextMessage(event, amessage);
      sendFBmessage(event, replymessage);
    }
  });

  //if apiai gets error
  apiai.on('error', (error) => {
    console.log(error);
  });

  //apiai end
  apiai.end();
}

i to wysłać wiadomość FB

function sendFBmessage(event, replymessage){
  let sender = event.sender.id;

  request({
      url: 'https://graph.facebook.com/v2.6/me/messages',
      qs: {access_token: PAGE_ACCESS_TOKEN},
      method: 'POST',
      json:{
        recipient: {id:sender},
        message: replymessage
      }
    }, (error, response) => {
      if(error){
        console.log('Error : ', error);
      }else if(response.body.error) {
        console.log('Error : ', response.body.error);
      }else{
        console.log(Send Message Complete);
        //return response.statusCode;
      }
    });
}

Chodzi o to, że wysyła out of order (Wiadomość tekstowa wysłana szybko, inne ciężkie zawartość wysłany wolno nawet Zaczyna się wcześniej).

Więc to, co chcę zrobić jest „za pomocą wysyłania działania” przed pierwszym komunikacie przesłanym pomyślnie.

Czy istnieje jakiś pomysł na ten temat? czy mógłbyś mi pomóc?

dzięki,

Utwórz 07/02/2017 o 21:46
źródło użytkownik
W innych językach...                            


1 odpowiedzi

nodejs Facebook Chat bot z Apiaí

głosy
1

Mam pytanie na temat radzenia sobie z bogatych wiadomości na Facebooku.

Gdy próbuję wysłać wiadomości z api.ai,

I wysłać wiadomość jak wejść Opis Link tutaj

function MessageHandler(event) {
  let sender = event.sender.id;
  let text = event.message.text;
//apiai text request
  let apiai = apiaiApp.textRequest(text, {
    sessionId: 'MY_HOSTETTER' // use any arbitrary id
  });

//get reponse from apiai
  apiai.on('response', (response) => {
    let apiaiText = response.result.fulfillment.speech;
    //let apiaiType = response.result.fulfillment.type;
    var apiaiMessages = response.result.fulfillment.messages;
    //response from agent or domain
    if(response.result.source == 'agent'){
      for(let i=0;i<apiaiMessages.length;i++){
        let amessage=apiaiMessages[i];
        let replymessage = null;
        //response from apiai agent
        //which type of response get
        switch(amessage.type){
          case 0 :
            //0 is text message
            console.log("ITS TEXT MESSAGE");
            replymessage = TextMessage(event, amessage);
            break;
          case 1 :
            //1 is card message
            console.log("ITS CARD MESSAGE");
            replymessage = CardMessage(event, amessage);
            break;
          case 2 :
            //2 is quick reply
            console.log("ITS QUICK REPLY");
            replymessage = QuickReply(event, amessage);
            break;
          case 3 :
            //3 is image mesaage
            console.log("ITS IMAGE MESSAGE");
            replymessage = ImageMessage(event, amessage);
            break;
          case 4 :
            //4 is custom payload
            console.log("ITS CUSTOM PAYLOAD");
            console.log(amessage.payload);
            replymessage = amessage.payload;
            break;
        }
        sendFBmessage(event, replymessage);
       }
    }else{
      //handling domain response
      console.log("ITS DOMAIN SAYING");
      replymessage = TextMessage(event, amessage);
      sendFBmessage(event, replymessage);
    }
  });

  //if apiai gets error
  apiai.on('error', (error) => {
    console.log(error);
  });

  //apiai end
  apiai.end();
}

i to wysłać wiadomość FB

function sendFBmessage(event, replymessage){
  let sender = event.sender.id;

  request({
      url: 'https://graph.facebook.com/v2.6/me/messages',
      qs: {access_token: PAGE_ACCESS_TOKEN},
      method: 'POST',
      json:{
        recipient: {id:sender},
        message: replymessage
      }
    }, (error, response) => {
      if(error){
        console.log('Error : ', error);
      }else if(response.body.error) {
        console.log('Error : ', response.body.error);
      }else{
        console.log("Send Message Complete");
        //return response.statusCode;
      }
    });
}

Chodzi o to, że wysyła out of order (Wiadomość tekstowa wysłana szybko, inne ciężkie zawartość wysłany wolno nawet Zaczyna się wcześniej).

Więc to, co chcę zrobić jest „za pomocą wysyłania działania” przed pierwszym komunikacie przesłanym pomyślnie.

Czy istnieje jakiś pomysł na ten temat? czy mógłbyś mi pomóc?

dzięki,

Odpowiedział 07/02/2017 o 21:46
źródło użytkownik

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