как сделать простой калькулятор площади с python и диалоговым потоком с помощью webhook? - PullRequest
0 голосов
/ 29 мая 2020

Я пытался сделать калькулятор площади с диалоговым потоком и python с помощью веб-перехватчика. и все, что я хочу, это вернуть значение области. Вот ответ

{
  "responseId": "94e23055-2c54-42da-ba78-1f44eff8d0ab-0f0e27e1",
  "queryResult": {
    "queryText": "find the area of 55cm and 88m",
    "parameters": {
      "unit-length": "",
      "unit-length1": {
        "unit": "cm",
        "amount": 55
      }
    },
    "allRequiredParamsPresent": true,
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            ""
          ]
        }
      }
    ],
    "intent": {
      "name": "projects/ultrabot-tlyvuq/agent/intents/b2b8e38b-6982-4b8d-8ff5-0bc42b955443",
      "displayName": "findArea"
    },
    "intentDetectionConfidence": 0.66548675,
    "diagnosticInfo": {
      "webhook_latency_ms": 357
    },
    "languageCode": "en"
  },
  "webhookStatus": {
    "code": 14,
    "message": "Webhook call failed. Error: UNAVAILABLE."
  },
  "alternativeQueryResults": [
    {
      "queryText": "find the area of 55cm and 88m",
      "languageCode": "en"
    }
  ]
}

как мне сделать этот ответ, чтобы вернуть значение области?

1 Ответ

1 голос
/ 27 июня 2020

Я пробовал использовать Django framework и разработал калькулятор basi c arithmeti c. Для выполнения этих операций вам необходимо использовать концепцию диалогового потока webhook. JsonResponse возвращает текст выполнения обратно в диалог.

@csrf_exempt
def webhook(request):
# build a request object
req = json.loads(request.body)
# get action from json
action = req.get('queryResult').get('action')
# get the arithmetic operation that needs to be done
num = req.get('queryResult').get('parameters')
n1 = int(num.get('number'))
n2 = int(num.get('number1'))
if action == 'addition':
# return a fulfillment message
    fulfillmentText = {'fulfillmentText': n1+n2}

elif action == 'subtraction':
    fulfillmentText = {'fulfillmentText': n1-n2}

elif action == 'division':
    fulfillmentText = {'fulfillmentText': n1/n2}

else:
    fulfillmentText = {'fulfillmentText': n1*n2}
# return response
return JsonResponse(fulfillmentText, safe=False)

Ниже jsonResponse вернет текст выполнения,

return JsonResponse (fillmentText, safe = False)

Если вам нужна дополнительная информация, прочтите мой блог , где представлен весь рабочий процесс, который я сделал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...