Post API格式
{
"first_name": "sakshi",
"last_name":"agrawal",
"username":"sakshiagrawallllll",
"is_active":"1".
}
來自POST API的回應 如果用戶已經注冊了,那么這將是回應的格式。
{
"code"。404,
"訊息": "User Already In Database".
如果用戶沒有注冊,那么這將是一個回應。
{
"code"。200,
"訊息": {
"first_name": "sakshi",
"last_name": "agrawal",
"用戶名": "sakshiagrawallllll",
"is_active": "1",
"uped_at": "2021-08-31T06:37:24.536000Z",
"created_at": "2021-08-31T06:37:24.536000Z",
"_id": "612dce240e357825b00182d2"
},
"count": "",
"data": "", "data".
}
index.js代碼
'use strict'。
//從Actions on Google客戶端庫中匯入Dialogflow模塊。
const { dialogflow } >。= require('actions-on-google'/span>)。
const functions = require('firebase-functions')。
//span>實體化Dialogflow客戶端。
const app = dialogflow({ debug: true })。)
const axios = require('axios') 。
global.username=''。
global.firstname=''。
global.lastname=''。
global.sessionId=0。
global.flag=0。
global.code=[] 。
global.sid=[] 。
global.ques=[] 。
global.response=''/span>。
global.res=''。
global.data=''。
global.rs = '';
global.resp=[]。
global.reply = '';
app.intent('Default Welcome Intent', (conv) => /span> {
conv.add("Welcome to Smart Evaluation world's largest database of evaluations and interview questions. 你是注冊用戶嗎?")。)
exports.dialogflowFirebaseFulfillment = functions.https。 onRequest((request, response) => {
const agent = new WebhookClient({ request, response })。
console.log('Dialogflow Request headers: '/span> JSON. stringify(request.headers) )。
console.log('Dialogflow Request body: '/span> JSON. stringify(request.body) )。
function welcome(agent) {
const sessionVars = {
'userLang': 'en', //可能的處理 - 'en', 'hi'。
'words': [],
'問題'。[],
'currentIndexPosition': 0,
'score': 0,
};
const sessionContext = { 'name': KEY_SESSION, 'lifespanCount'/span>: 100000, 'parameters': sessionVars };
agent.setContext(sessionContext)。
let sessionId = agent.session;
conv.add(sessionId)。
sessionId=0。
}
let intentMap = new Map() 。
intentMap.set('Default Welcome Intent'/span>, welcome)。
agent.handleRequest(intentMap)。
});
});
app.intent('Non-Registered User', (conv) => /span> {
console.log(JSON.stringify(conv))。
var userreply = conv.body.queryResult.queryText。
if (userreply == "no"/span>)
{
conv.ask("為了注冊你,我將問你一系列的問題,請你誠實反饋。讓我們開始吧。你的名字是什么?")。)
flag=0。
}
else if (userreply == "yes"/span>)
{
conv.ask("歡迎回來,讓我們給你授權。你的名字是什么?")。)
}
});
app.intent('LastNameIntent', (conv) => /span> {
firstname = conv.parameters.any。
conv.ask("What is your last name?" ) 。
});
app.intent('UserNameIntent', (conv) => /span> {
lastname = conv.parameters.any。
conv.ask("What is your user name?" )。
});
app.intent('SecurityQuestionIntent', (conv) => /span> {
var reply;
username = conv.parameters.any。
conv.ask("Thank you" firstname lastname username)。
if(flag == 0)
{
async function makePostRequest() {
var payload = {
"first_name": firstname,
"last_name": lastname,
"username": 用戶名。
"is_active": "1":用戶名
};
console.log(payload)。
let res = await axios.post('API', payload, {
headers: { 'Content-Type' : 'application/json'}.
})
/*(error) => {
console.log(error);
});*/
console.log("Response of data code is" res.data.code) 。
reply = res.data.code。
console.log("Reply is " reply)。
return reply。
}
reply = makePostRequest();
console.log("Reply after method is"/span> reply)。
conv.ask(reply)。
}
});
//設定DialogflowApp物件來處理theif() HTTPS POST請求。
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app)。
package.json
{
"name": "dialogflowFirebaseFulfillments"。
"description": "這是一個使用Firebase云函式的Dialogflow代理的默認履行"。
"版本"。"0.0.1"。
"私有"。true。
"許可證"。"Apache Version 2.0"。
"author": "Google Inc."。
"引擎": {
"node": "10"。
},
"scripts": {
"start": "firebase service --only functions:dialogflowFirebaseFulfillments"。
"deploy"。"firebase deploy --only functions:dialogflowFirebaseFulfillments"。
"logs"。"firebase functions:log"。
},
"依賴性": {
"action-on-google": "^2.4.0",
"firewase-admin": "^5.13.1",
"firebase-functions": "^2.0.2",
"dialogflow": "^0.6.0",
"dialogflow-fulfillment": "^0.6.0",
"axios": "0.18.0",
"aws-sdk": "2.696.0",
"multivocal": "0.15.2"。
"express-session": "1.17.1".
}
}
當我試圖在函式外訪問 "reply "變數時,我得到了[object Promise],而如果試圖在函式內列印,則會得到很好的列印結果。
我怎樣才能在函式外訪問變數 "回復"。誰能幫幫我?
uj5u.com熱心網友回復:
這是一個異步函式的問題。它回傳promise物件(refrence):
異步函式總是回傳一個承諾。如果異步函式的回傳值不是顯式的承諾,那么它將被隱式地包裝成一個承諾。
由于makePostRequest是異步函式,所以需要使用一些異步結構,比如than或await,來獲得結果。
我認為最簡單的應該是將reply的賦值和流水線改成:
編輯:
return狀態被添加到 aviod Error: 沒有發送回應
return makePostRequest()。 then(reply => {
console.log("Reply after method is"/span> reply)。
conv.ask(reply)。
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/320484.html
標籤:



