NodeJS facebook chatbot met Apiai

stemmen
1

Ik heb een vraag over het omgaan met rijke berichten in facebook.

Wanneer ik probeer om berichten met api.ai sturen,

Ik stuur het bericht zoals in te voeren koppeling beschrijving hier

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

En dit is te sturen FB Message

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

Het ding is dat het stuurt niet in orde (SMS-bericht verzonden snel, andere zware inhoud verzonden traag zelfs Het begint eerder.)

Dus wat ik wil maken is met behulp van het versturen van actie voor het eerste bericht verzonden.

Is er enig idee over? zou je me kunnen helpen?

bedankt,

De vraag is gesteld op 07/02/2017 om 21:46
bron van user
In andere talen...                            


1 antwoorden

NodeJS facebook chatbot met Apiai

stemmen
1

Ik heb een vraag over het omgaan met rijke berichten in facebook.

Wanneer ik probeer om berichten met api.ai sturen,

Ik stuur het bericht zoals in te voeren koppeling beschrijving hier

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

En dit is te sturen FB Message

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

Het ding is dat het stuurt niet in orde (SMS-bericht verzonden snel, andere zware inhoud verzonden traag zelfs Het begint eerder.)

Dus wat ik wil maken is "met behulp van het versturen van actie" voor het eerste bericht verzonden.

Is er enig idee over? zou je me kunnen helpen?

bedankt,

antwoordde op 07/02/2017 om 21:46
bron van user

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