NotifySuccess при saveEvent не работает, в консоли отображается ошибка

Я пытаюсь создать экран для сохранения соединителя и не могу заставить работать кнопку «Сохранить». Он выдает ошибку JavaScript из глубины самой Teams.

Как видите, я использую последнюю стабильную версию Teams JS.

Мой код был максимально простым. Он просто инициализирует и устанавливает действительность кнопки «Сохранить», чтобы ее можно было щелкнуть.

<!DOCTYPE html>
<html lang = "en">
  <head>
    <script src = "https://res.cdn.office.net/teams-js/2.7.1/js/MicrosoftTeams.min.js" crossorigin = "anonymous">
    </script>
  </head>
  <body>
    <p>Testing 6</p>

    <script>
      async function init() {
        await microsoftTeams.app.initialize();
        microsoftTeams.pages.config.setValidityState(true);
      }

      init();
    </script>
  </body>
</html>

Если я загружаю консоль в своем веб-браузере, я получаю следующую ошибку:

2023-01-25T03:00:00.927Z Received error from connectors {
  "seq":1674609016862,
  "timestamp":1674613638241,
  "flightSettings":{
    "Name":"ConnectorFrontEndSettings",
    "AriaSDKToken":"d12...",
    "SPAEnabled":true,
    "ClassificationFilterEnabled":true,
    "ClientRoutingEnabled":true,
    "EnableYammerGroupOption":true,
    "EnableFadeMessage":false,
    "EnableDomainBasedOwaConnectorList":false,
    "EnableDomainBasedTeamsConnectorList":false,
    "DevPortalSPAEnabled":true,
    "ShowHomeNavigationButtonOnConfigurationPage":false,
    "DisableConnectToO365InlineDeleteFeedbackPage":true,
    "RemoveAnchorHeader":true
  },
  "status":500,
  "clientType":"SkypeSpaces",
  "connectorType":"92a...",
  "name":"handleMessageError"
}

Файл манифеста также прост: это файл, загруженный с панели мониторинга соединителя (с удаленной недопустимой частью и обновленной версией схемы, поскольку панель генерирует НЕДЕЙСТВИТЕЛЬНЫЕ МАНИФЕСТЫ). Поскольку я загрузил файл, UUID и действительные домены идеально совпадают.

{
  "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.15/MicrosoftTeams.schema.json",
  "manifestVersion": "1.15",
  "id": "2ac21268...",
  "version": "1.0.0",
  "packageName": "com.Simple I/O (Development 3)",
  "developer": {
    "name": "Developer",
    "websiteUrl": "https://3821-68-69-235-13.ngrok.io",
    "privacyUrl": "https://3821-68-69-235-13.ngrok.io",
    "termsOfUseUrl": "https://3821-68-69-235-13.ngrok.io"
  },
  "description": {
    "full": "Simple I/O (Development 3)",
    "short": "Simple I/O (Development 3)"
  },
  "icons": {
    "outline": "outline.png",
    "color": "color.png"
  },
  "connectors": [
    {
      "connectorId": "2ac21268...",
      "scopes": [
        "team"
      ],
      "configurationUrl": "https://3821-68-69-235-13.ngrok.io/teams/connector"
    }
  ],
  "name": {
    "full": "Simple I/O (Development 3)",
    "short": "Simple I/O (Development 3)"
  },
  "accentColor": "#FFFFFF",
  "validDomains": [
    "3821-68-69-235-13.ngrok.io"
  ]
}

Обновление по этому поводу: все еще очень сломано. Если я изменю приведенный выше код так, чтобы он вызывал notifyFailure() вместо успеха, он немедленно завершится ошибкой (как и должно быть). Таким образом, проблема должна быть где-то внутри notifySuccess(), что объясняет, почему он также терпит неудачу, если я не регистрирую обработчик сохранения (документы предполагают, что notifySuccess() вызывается автоматически.

Brandon Medenwald 25.01.2023 12:53

Здравствуйте, @Brandon. У вас была возможность попробовать последнюю версию TeamsJS? Кроме того, вы столкнулись с этой проблемой в клиенте Teams для настольных ПК? Если да, не могли бы вы поделиться сведениями о своей версии клиента Teams?

ChetanSharma-msft 26.01.2023 09:08

@ChetanSharma-msft Я использую team.microsoft.com, поэтому номер версии не имеет значения (хотя я могу воспроизвести все эти проблемы в версии приложения для Mac 1.5.00.33356). Что касается версии Teams JS, я полностью перешел на 1.12.1 без каких-либо исправлений. Мне не нужно было переписывать весь мой код везде на версию 2 и обещания только для того, чтобы заставить эту страницу конфигурации работать, верно?

Brandon Medenwald 26.01.2023 15:20

@ChetanSharma-msft Обновлено выше с дополнительными примерами кода. Как видите, я создал совершенно новый, упрощенный, автономный пример почти без кода, и он все еще не работает. Используя веб-сайт (поэтому у меня есть последние версии Teams), я использую последнюю стабильную версию Teams JS. Все еще сломано.

Brandon Medenwald 26.01.2023 19:04

@BrandonMedenwald — мы протестировали это с помощью Teams JS версии 2.7.1. Мы создали собственный коннектор. registerOnSaveHandler вызывается, но saveEvent.notifySuccess не вызывается, а кнопка «Сохранить» не активна. Мы подняли ошибку для того же. Мы будем держать вас в курсе, если будут какие-либо обновления по нему.

Nivedipa-MSFT 27.01.2023 06:34

@BrandonMedenwald — мы протестировали это на настольном клиенте Teams 1.6.00.2359 в Windows 11 и Teams JS версии 2.7.1.

Nivedipa-MSFT 27.01.2023 07:28

@ChetanSharma-msft Я решил свою проблему ниже, документация ОЧЕНЬ НЕПРАВИЛЬНАЯ и не указывает, что требуется. Сгенерированные сообщения об ошибках находятся глубоко внутри вашего кода Angular JS и не уведомляют должным образом об использовании того, что требуется, поэтому такие разработчики, как я, остаются в темноте.

Brandon Medenwald 27.01.2023 14:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Несмотря на все упомянутое в документации, необходимо следующее, иначе вы получите эту ошибку. Это исправило ситуацию для меня.

microsoftTeams.settings.registerOnSaveHandler(saveEvent => {
  microsoftTeams.settings.setSettings({
    contentUrl: "https://xxxxxx.ngrok.io/teams/connector"
  });

  saveEvent.notifySuccess();
});

В документации указано, что регистрация обработчика сохранения необязательна, и Teams будет обрабатывать уведомление об успешном завершении, если оно не объявлено. НЕПРАВИЛЬНЫЙ. Вы должны зарегистрировать обработчик сохранения.

В документации не указано, что setSettings требуется. НЕПРАВИЛЬНЫЙ. Вы должны установить настройки, иначе вы получите эту ошибку.

В документации не указано, что вы должны сохранять файл contentURL. НЕПРАВИЛЬНЫЙ. Вы должны указать URL контента в setSettings. Очевидно, вы можете опустить другие вещи при настройке параметров, но не URL-адрес контента.

В документации об этом конкретно не упоминается, но contentURL должен соответствовать вашему validURLs в вашем манифесте. Если это не так, вы также увидите эту ошибку.

Другие вопросы по теме