Почему моя команда надстройки Office без пользовательского интерфейса не отвечает, а та же команда, отправляемая из области задач? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть надстройка для Outlook, которая перенаправляет при нажатии кнопки на внешний веб-сайт.В Office Outlook Online все работает нормально, но на Office Outlook Desktop команда не выполняется.Почему это так?

Надстройка размещается на сервере node.js на основе Ubuntu 14.04 с действующим сертификатом для https.Если я вызываю ту же команду из панели задач с помощью кнопки, команда выполняется, и пользователь перенаправляется.

У меня было много проблем при настройке сервера, но теперь сервер работает и файлы доступны без проблем.Я подумал, что это может быть проблема с моим самозаверяющим сертификатом, и изменил его на сертификат из доверенного источника, но вывод такой же.Тем не менее, запуск его локально, как при запуске локального сервера node.js из моей системы Windows и вызове его через localhost, работает.Команда выполняется.

Я ожидаю, что команда командной кнопки в Outlook Desktop будет выполнена аналогично тому, как она выполняется в Outlook Web.Это не показывает сообщение об ошибке.NotificationMessage просто продолжает сообщать мне, что в данный момент выполняет команду, но ничего не происходит и даже не изменяется.Я должен заставить задачу остановиться, закрыв окно.

Я видел, как кто-то еще упомянул похожую проблему ( Как заставить кнопку «Команды» работать в надстройках Office? ), но ее решение не помогло моей проблеме.

Моя проблема в том, что команда не выполняется на рабочем столе Outlook при размещении моего надстройки на сервере nodejs на основе Ubuntu.И я был бы очень признателен, если бы у кого-то была идея, как решить эту проблему, или он видел ту же проблему, которая могла бы ее решить.

Спасибо.

Manifest.xml (реальное имя сервера заменяется на конфиденциальную информацию "ourServer".) GotoSite -> window.open ("https://google.com")

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
  <Id>0ec8dc72-014b-4426-acd3-f06edeb15052</Id>
  <Version>1.0.0.0</Version>
  <ProviderName>Convien</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="Convien"/>
  <Description DefaultValue="Come together... right now!"/>
  <IconUrl DefaultValue="https://ourServer.convien.com:3000/assets/Convien32X32.png"/>
  <HighResolutionIconUrl DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
  <SupportUrl DefaultValue="https://convien.com"/>
  <AppDomains>
    <AppDomain>convien.com</AppDomain>
    <AppDomain>https://easy.convien.com</AppDomain>
    <AppDomain>https://www.google.com</AppDomain>
    <AppDomain>https://stress.convien.com/convien_outlook/</AppDomain>
  </AppDomains>
  <Hosts>
    <Host Name="Mailbox"/>
  </Hosts>
  <Requirements>
    <Sets>
      <Set Name="Mailbox" MinVersion="1.1"/>
    </Sets>
  </Requirements>
  <FormSettings>
    <Form xsi:type="ItemRead">
      <DesktopSettings>
        <SourceLocation DefaultValue="https://ourServer.convien.com:3000/src/taskpane/taskpane.html"/>
        <RequestedHeight>250</RequestedHeight>
      </DesktopSettings>
    </Form>
  </FormSettings>
  <Permissions>ReadWriteItem</Permissions>
  <Rule xsi:type="RuleCollection" Mode="Or">
    <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit"/>
    <Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit"/>
  </Rule>
  <DisableEntityHighlighting>false</DisableEntityHighlighting>
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
    <Requirements>
      <bt:Sets DefaultMinVersion="1.3">
        <bt:Set Name="Mailbox"/>
      </bt:Sets>
    </Requirements>
    <Hosts>
      <Host xsi:type="MailHost">
        <DesktopFormFactor>
          <FunctionFile resid="Commands.Url"/>
          <ExtensionPoint xsi:type="MessageReadCommandSurface">
            <OfficeTab id="TabDefault">
              <Group id="msgReadGroup">
                <Label resid="GroupLabel"/>                
                <Control xsi:type="Button" id="linkButton">
                  <Label resid="LinkButton.Label"/>
                  <Supertip>
                    <Title resid="LinkButton.Label"/>
                    <Description resid="LinkButton.Tooltip"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Icon.80x80"/>
                    <bt:Image size="32" resid="Icon.80x80"/>
                    <bt:Image size="80" resid="Icon.80x80"/>
                  </Icon>
                  <Action xsi:type="ExecuteFunction">
                    <FunctionName>GotoSite</FunctionName>
                  </Action>
                </Control>
              </Group>

            </OfficeTab>
          </ExtensionPoint>
        </DesktopFormFactor>
      </Host>
    </Hosts>
    <Resources>
      <bt:Images>
        <bt:Image id="Icon.16x16" DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
        <bt:Image id="Icon.32x32" DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
        <bt:Image id="Icon.80x80" DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
      </bt:Images>
      <bt:Urls>
        <bt:Url id="Commands.Url" DefaultValue="https://ourServer.convien.com:3000/src/commands/commands.html"/>
        <bt:Url id="Taskpane.Url" DefaultValue="https://ourServer.convien.com:3000/src/taskpane/taskpane.html"/>
      </bt:Urls>
      <bt:ShortStrings>
        <bt:String id="GroupLabel" DefaultValue="Meeting Place"/>
        <bt:String id="LinkButton.Label" DefaultValue="Convien Easy"/>

      </bt:ShortStrings>
      <bt:LongStrings>
        <bt:String id="LinkButton.Tooltip" DefaultValue="Opens Convien Easy web application."/>        
      </bt:LongStrings>
    </Resources>
  </VersionOverrides>
</OfficeApp>

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Вполне уверен, что проблема заключается в следующем (по крайней мере, на рабочем столе Word).

1) команды и панель задач работают в разных контекстах javascript. То есть Функция, запущенная на панели команд, не может получить доступ к панели задач.

2) командная лента не имеет памяти. Они запускают новый безголовый контекст js каждый раз, когда вы нажимаете кнопку.

3) поскольку он без головы, он не может открыть новое окно.

4) поскольку лента отключена от панели задач, любые попытки изменения окна.расположения не перенаправляют панель задач.

Я «обошел» это, имея веб-сокет для сброса команд с сервера. Да. Шутки в сторону.

Кстати, именно так Websocket и убедился, что кнопка действительно работает. Даже если я ошибаюсь относительно того, как работает ваше перенаправление, это тупо полезный инструмент отладки, поскольку отладчик f12 не может быть присоединен к ленте команд.

Пожалуйста, помешайте тому, кто «придумал» это для меня с помощью гигантского надувного молотка.

0 голосов
/ 06 июня 2019

Существует две возможности: либо функция не выполняется успешно, либо выполняется определенный код «перенаправления», но не дает ожидаемого эффекта.Поскольку вы упомянули, что код работает из области задач, этот ответ будет охватывать первую возможность.

Уведомление «в процессе» является признаком того, что event.completed () не вызывается в концевыполненной функции.Первым шагом является проверка того, что event.completed () определен, а затем пошаговое выполнение кода, чтобы убедиться, что функция работает успешно.Вы также можете попробовать вызвать API-интерфейс messagesMessages , чтобы увидеть видимый эффект в сообщении.

Этот документ описывает, как реализовать функцию, определенную FunctionName, в манифесте.Для асинхронного кода event.completed () должен фактически вызываться в обратном вызове.

Отладка надстройки без пользовательского интерфейса сложна, поскольку отладчик F12 будет подключаться только один раз, когда надстройкав работает.Вы можете использовать Fiddler для проверки успешной загрузки .html (это может помочь исключить ошибку сертификата).И при необходимости вы можете присоединить отладчик сценариев Visual Studio, который должен оставаться подключенным между выполнениями надстроек (для этого важно, чтобы вызывался event.completed (), потому что в противном случае второе выполнение будет поставлено в очередь, ожидаяпервое исполнение для завершения).

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