2016-09-15 4 views
0

Мне нужен мой бот-чат Wit.ai, чтобы отвечать на определенные сообщения с изображениями, а так как я реорганизовал свой код в соответствии с последним примером мессенджера в SDK с узлом Я не могу понять, как это сделать.Wit.ai - отправка изображений через Facebook Messenger Отправить API

Ранее эта функция FB сообщение работал для меня:

var newMessage = function (recipientId, msg, atts, cb) { 
    var opts = { 
     form: { 
      recipient: { 
       id: recipientId 
      }, 
     } 
    } 

    if (atts) { 
     var message = { 
      attachment: { 
       "type": "image", 
       "payload": { 
        "url": msg 
       } 
      } 
     } 
    } else { 
     var message = { 
      text: msg 
     } 
    } 
    opts.form.message = message 

    newRequest(opts, function (err, resp, data) { 
     if (cb) { 
      cb(err || data.error && data.error.message, data) 
     } 
    }) 
} 

Теперь я обновленное к node-wit SDK messenger example:

const fbMessage = (id, text) => { 
    const body = JSON.stringify({ 
    recipient: { id }, 
    message: { text }, 
    }); 
    const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN); 
    return fetch('https://graph.facebook.com/me/messages?' + qs, { 
     method: 'POST', 
     headers: {'Content-Type': 'application/json'}, 
     body, 
    }) 
    .then(rsp => rsp.json()) 
    .then(json => { 
     if (json.error && json.error.message) { 
       throw new Error(json.error.message); 
     } 
    return json; 
    }); 
}; 

Что я изменил, как это попытаться сделать изображение отвечает работу :

const fbMessage = (id, text, atts) => { 

    if (atts) { 
     var body = { 
      attachment: { 
       "type": "image", 
       "payload": { 
        "url": { text } 
       } 
      }, 
     }; 
    } else { 
     var body = JSON.stringify({ 
      recipient: { id }, 
      message: { text }, 
     }); 
    } 
    const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN); 
    return fetch('https://graph.facebook.com/me/messages?' + qs, { 
     method: 'POST', 
     headers: {'Content-Type': 'application/json'}, 
     body, 
    }) 
    .then(rsp => rsp.json()) 
    .then(json => { 
     if (json.error && json.error.message) { 
      throw new Error(json.error.message); 
     } 
     return json; 
    }); 
}; 

Текст сообщения отправляются как обычно, но когда я пытаюсь и прикрепление изображения, мои ссылки на url изображения просто отправляются как строки.

The FB Messenger Send API reference is here

Любая помощь будет принята с благодарностью!

ответ

0

Понял работать с этим:

const fbMessage = (id, text) => { 

    var x = text.substring(0,4); 

    if (x == 'http') { 
     var body = JSON.stringify({ 
      recipient: { id }, 
      message: { 
       attachment: { 
        "type": "image", 
        "payload": { 
         "url": text 
        } 
       } 
      }, 
    }); 

    } else { 
     var body = JSON.stringify({ 
      recipient: { id }, 
      message: { text }, 
     }); 
    } 

    const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN); 
    return fetch('https://graph.facebook.com/me/messages?' + qs, { 
     method: 'POST', 
     headers: {'Content-Type': 'application/json'}, 
     body, 
    }) 
    .then(rsp => rsp.json()) 
    .then(json => { 
     if (json.error && json.error.message) { 
      throw new Error(json.error.message); 
     } 
     return json; 
    }); 
}; 

* NB - Это, очевидно, не будет работать, если вы планируете отправку текстовых ответов, которые только URLS т.е. «http://example.com». Чтобы обойти это, вы можете поместить любой символ перед адресом url в своем сообщении так: '>http://example.com' и ссылки будут работать нормально.

Смежные вопросы