Я пытаюсь создать экран для сохранения соединителя и не могу заставить работать кнопку «Сохранить». Он выдает ошибку 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"
]
}
Здравствуйте, @Brandon. У вас была возможность попробовать последнюю версию TeamsJS? Кроме того, вы столкнулись с этой проблемой в клиенте Teams для настольных ПК? Если да, не могли бы вы поделиться сведениями о своей версии клиента Teams?
@ChetanSharma-msft Я использую team.microsoft.com, поэтому номер версии не имеет значения (хотя я могу воспроизвести все эти проблемы в версии приложения для Mac 1.5.00.33356). Что касается версии Teams JS, я полностью перешел на 1.12.1 без каких-либо исправлений. Мне не нужно было переписывать весь мой код везде на версию 2 и обещания только для того, чтобы заставить эту страницу конфигурации работать, верно?
@ChetanSharma-msft Обновлено выше с дополнительными примерами кода. Как видите, я создал совершенно новый, упрощенный, автономный пример почти без кода, и он все еще не работает. Используя веб-сайт (поэтому у меня есть последние версии Teams), я использую последнюю стабильную версию Teams JS. Все еще сломано.
@BrandonMedenwald — мы протестировали это с помощью Teams JS версии 2.7.1. Мы создали собственный коннектор. registerOnSaveHandler вызывается, но saveEvent.notifySuccess не вызывается, а кнопка «Сохранить» не активна. Мы подняли ошибку для того же. Мы будем держать вас в курсе, если будут какие-либо обновления по нему.
@BrandonMedenwald — мы протестировали это на настольном клиенте Teams 1.6.00.2359 в Windows 11 и Teams JS версии 2.7.1.
@ChetanSharma-msft Я решил свою проблему ниже, документация ОЧЕНЬ НЕПРАВИЛЬНАЯ и не указывает, что требуется. Сгенерированные сообщения об ошибках находятся глубоко внутри вашего кода Angular JS и не уведомляют должным образом об использовании того, что требуется, поэтому такие разработчики, как я, остаются в темноте.
Несмотря на все упомянутое в документации, необходимо следующее, иначе вы получите эту ошибку. Это исправило ситуацию для меня.
microsoftTeams.settings.registerOnSaveHandler(saveEvent => {
microsoftTeams.settings.setSettings({
contentUrl: "https://xxxxxx.ngrok.io/teams/connector"
});
saveEvent.notifySuccess();
});
В документации указано, что регистрация обработчика сохранения необязательна, и Teams будет обрабатывать уведомление об успешном завершении, если оно не объявлено. НЕПРАВИЛЬНЫЙ. Вы должны зарегистрировать обработчик сохранения.
В документации не указано, что setSettings
требуется. НЕПРАВИЛЬНЫЙ. Вы должны установить настройки, иначе вы получите эту ошибку.
В документации не указано, что вы должны сохранять файл contentURL
. НЕПРАВИЛЬНЫЙ. Вы должны указать URL контента в setSettings
. Очевидно, вы можете опустить другие вещи при настройке параметров, но не URL-адрес контента.
В документации об этом конкретно не упоминается, но contentURL
должен соответствовать вашему validURLs
в вашем манифесте. Если это не так, вы также увидите эту ошибку.
Обновление по этому поводу: все еще очень сломано. Если я изменю приведенный выше код так, чтобы он вызывал
notifyFailure()
вместо успеха, он немедленно завершится ошибкой (как и должно быть). Таким образом, проблема должна быть где-то внутриnotifySuccess()
, что объясняет, почему он также терпит неудачу, если я не регистрирую обработчик сохранения (документы предполагают, чтоnotifySuccess()
вызывается автоматически.