Powerapps не удается получить доступ к JSON в коллекции

У меня возникают трудности с доступом к данным в коллекции через PowerApps.

Я создаю коллекцию с этим:

Collect(coll15,mt.GetAnswers("3b....da","application/json",{question:"eco"}))

Использование инструментов разработчика -> вкладка «Сеть» -> тело ответа — возвращаются следующие данные JSON:

{
"answers": [
{
  "answer": "This is the answer",
  "questions": [
    "Private vehicle eco renewal"
  ],
  "score": 82.901087775826454
}
]
}

Коллекция создана.

Затем я добавляю элемент управления галереей на свою страницу, однако единственные параметры, которые мне нужно привязать к меткам, это: ThisItem.Value.

Если я попытаюсь ввести ThisItem.Value.answer, я получу ошибку: Недопустимое использование '.'

Если я ввожу ThisItem.answers.answer, я получаю сообщение об ошибке: Недопустимое имя

Это файл swagger:

{
"swagger": "2.0",
"info": {
  "version": "1.0.0",
  "title": "mt",
  "description": "mt"
},
"host": "westus.api.cognitive.microsoft.com:443",
"basePath": "/",
"schemes": [
  "https"
],
"consumes": [],
"produces": [
  "application/json"
],
"paths": {
  "/qnamaker/v2.0/knowledgebases/eeeee.....eeeee/generateAnswer": {
     "post": {
        "summary": "GetAnswers",
        "description": "Get answers from qna",
        "operationId": "GetAnswers",
        "parameters": [
           {
              "name": "body",
              "in": "body",
              "schema": {
                 "type": "object",
                 "properties": {
                    "question": {
                       "type": "string",
                       "description": "question",
                       "x-ms-summary": "question",
                       "title": "question",
                       "x-ms-visibility": ""
                    }
                 },
                 "default": {
                    "question": "hi"
                 },
                 "required": [
                    "question"
                 ]
              },
              "required": true
           }
        ],
        "responses": {
           "default": {
              "description": "default",
              "schema": {
                 "type": "string"
              }
           }
        }
     }
  }
},
"definitions": {},
"parameters": {},
"responses": {},
"securityDefinitions": {
  "api_key": {
     "type": "apiKey",
     "in": "header",
     "name": "Ocp-Apim-Subscription-Key"
  }
},
"security": [
  {
     "oauth2_auth": [
        "Offline-Access"
     ]
  }
],
"tags": []
}

Есть ли способ получить доступ к тексту ответа в коллекции?

Спасибо за любую помощь,

Отметка


person Mark Tait    schedule 05.04.2018    source источник
comment
Что такое mt? Пользовательский соединитель, который вы создали, или существующий? Если это настраиваемый коннектор, можете ли вы предоставить для него определение OpenAPI/Swagger?   -  person carlosfigueira    schedule 05.04.2018
comment
Привет - да, это специальный разъем. Я создал его на web.powerapps.com — я не вижу, как загрузить файл swagger. Не могли бы вы посоветовать, пожалуйста?   -  person Mark Tait    schedule 05.04.2018
comment
Если вы зайдете на web.powerapps.com, то выберите Data --› Custom Connectors, вы должны увидеть список тех, которые у вас есть, и скачать swagger оттуда. Подробнее см. на imgur.com/a/RS93P. Помните, что если вы делитесь файлом swagger, удалите все ключи/пароли/информацию, которыми вы не хотите делиться. Определения операций/объектов, вероятно, являются местом, где у вас есть проблема.   -  person carlosfigueira    schedule 05.04.2018
comment
Спасибо, Карлос - я добавил файл чванства к своему вопросу - я не уверен, что мне нужно изменить (если что-нибудь).   -  person Mark Tait    schedule 05.04.2018


Ответы (1)


Проблема в том, что тип ответа для операции в определении коннектора — строка:

    "responses": {
       "default": {
          "description": "default",
          "schema": {
             "type": "string"
          }
       }
    }

Но вместо этого ваш ответ является объектом. Если вы обновите свой настраиваемый коннектор, чтобы вместо этого использовать типизированный объект, вы сможете получить доступ к ответу от операции. Что-то вроде строк схемы ниже:

    "responses": {
      "default": {
        "description": "default",
        "schema": {
          "type": "object",
          "properties": {
            "answers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "answer": {
                    "type": "string"
                  },
                  "questions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "score": {
                    "type": "number",
                    "format": "float"
                  }
                }
              }
            }
          }
        }
      }
    },

Обратите внимание, что на портале (web.powerapps.com), если вы перейдете к определению своего настраиваемого соединителя и выберите «Изменить», вы можете перейти к операции и выбрать ответ, который хотите изменить:

Выберите ответ

А затем используйте опцию «Импорт из образца».

Импорт из образца

При этом, если вы введете пример ответа от API, он создаст для вас схему (аналогичную той, что у меня выше).

person carlosfigueira    schedule 05.04.2018