node.js - close - Enviar mensaje de nuevo desde la vista web de Facebook a bot
webview facebook messenger (2)
Había escrito un bot en frameworks de ms bot para Facebook Messenger que crea un carrusel usando un adjunto de datos de canal personalizado con web_url
que habilita las extensiones de messenger: "messenger_extensions": true
. Hemos agregado extensiones de Messenger en una página de vista web, pero no está claro cómo enviar un mensaje con un archivo adjunto desde esta página de vista web a Messenger y, por lo tanto, al marco bot.
<!DOCTYPE html>
<html>
<body>
<style type="text/css">
.button {
background-color: #4CAF50;
/* Green */
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
width: 50%;
margin: 25%;
}
</style>
<button type="button" class="button" onclick="sendMessage();">Complete Booking</button>
<script type="text/javascript">
function sendMessage() {
alert(''Booking completed. What to do now? How to send the message back to bot?'')
/// how to return? the facebook docs don''t say anything
/// you HAVE to make a server round trip.. https://stackoverflow.com/questions/43956045/messengerextensions-how-to-send-a-message-by-messenger-to-users
return {
text: "HOTEL_SERVICE_PAYLOAD",
attachments: [
{
email: "[email protected]",
hotelName: "Hotel marriott",
confirmNumber: "1234567"
}
]
}
MessengerExtensions.requestCloseBrowser(function success() {
}, function error(err) {
});
}
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) { return; }
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.com/en_US/messenger.Extensions.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "Messenger"));
window.extAsyncInit = function () {
// the Messenger Extensions JS SDK is done loading
MessengerExtensions.getUserID(function success(uids) {
var psid = uids.psid;//This is your page scoped sender_id
alert("Getting PSID")
alert("This is the user''s psid " + psid);
}, function error(err) {
alert("Messenger Extension Error: " + err);
});
};
</script>
</body>
</html>
He leído toneladas de documentación y blogs, incluido stackoverflow: https://stackoverflow.com/a/44536739/630169 .
¿Hay un ejemplo simple de script de JavaScript incrustado en una página? ¡Gracias!
Es posible enviar parámetros con la solicitud get, ( https: // someurl? UserChannelID = ) y luego usarlos en su código js, para generar un mensaje de su servidor (utilizamos la línea directa)
Si entiendo bien la pregunta, podría configurar un punto final API que desencadena el envío de un mensaje, y llegar a ese punto final en la exitosa devolución de llamada de `MessengerExtensions.requestCloseBrowser ().
Ejemplo utilizando jQuery y el módulo expreso del nodo:
Webview:
window.extAsyncInit = function () {
// the Messenger Extensions JS SDK is done loading
MessengerExtensions.getUserID(function success(uids) {
var psid = uids.psid;//This is your page scoped sender_id
$.post(''https://myapi.com/sendOnWebviewClose'', {"psid": psid})
}, function error(err) {
alert("Messenger Extension Error: " + err);
});
};
Servidor:
app.post(''/sendOnWebviewClose'', (req, res) => {
let psid = req.body.psid;
sendMessage(psid);
})