为什么从任务窗格发送同一命令时,没有UI的Office Addin命令没有响应?

时间:2019-06-04 14:41:08

标签: javascript node.js outlook office-js outlook-web-addins

我有一个Outlook加载项,可以在按命令按钮时重定向到外部网站。在Office Outlook Online中,一切正常,但是在Office Outlook Desktop上,该命令未执行。为什么会这样?

该插件托管在基于Ubuntu 14.04的node.js服务器上,并带有有效的https证书。如果我使用按钮从任务窗格中调用相同的命令,则该命令将被执行,并且用户将被重定向。

设置服务器时遇到很多问题,但是现在服务器正在运行,文件可以访问而没有问题。 我以为我的自签名证书可能有问题,因此将其更改为来自受信任来源的证书,但是输出是相同的。 但是,像在Windows系统中启动本地node.js服务器并通过localhost调用一样,可以在本地运行它。该命令正在执行。

我希望在Outlook Desktop中执行命令按钮的命令类似于在Outlook Web中执行命令的命令。 它不显示任何错误消息。 notificationMessage只是一直告诉我它当前正在执行命令,但是什么也没有发生,甚至没有改变。 我必须通过关闭窗口来强制任务停止。

我看到其他人提到了类似的问题(How to get 'Commands' button working in Office Addins?),但是答案并没有解决我的问题。

在基于ubuntu的nodejs服务器上托管我的插件时,在Outlook Desktop上未执行命令是我的问题。 如果有人对解决这个问题有一个想法,或者看到有人遇到了同样的问题,可以解决这个问题,我将非常感谢。

谢谢。

Manifest.xml (出于机密原因,真实服务器名称已交换为“ ourServer” bc。) 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 :(得分:0)

有两种可能性:函数未成功执行,或者特定的“重定向”代码正在运行,但没有达到预期的效果。既然您提到代码是从任务窗格运行的,那么此答案将涵盖第一种可能性。

“进行中”通知消息表示在执行函数的末尾未调用event.completed()。第一步是验证是否定义了event.completed(),然后逐步检查代码以确保函数成功运行。您也可以尝试调用notificationMessages API,以在消息中看到可见的效果。

This doc描述了如何实现清单中FunctionName定义的功能。对于异步代码,应在回调中实际调用event.completed()。

调试无UI的外接程序非常棘手,因为F12 Debugger仅在外接程序运行后才会附加。您可以使用Fiddler验证.html是否成功加载(这可以帮助排除证书错误)。并且,如果需要,您可以附加Visual Studio脚本调试器,该调试器应在附加程序执行之间保持附加状态(为此,调用event.completed()很重要,因为否则,第二次执行将被排队,等待第一次执行即可完成。

答案 1 :(得分:0)

非常确定问题如下(至少在word桌面中)。

1)命令和任务窗格在不同的javascript上下文中工作。 即在命令窗格中运行的功能无法访问任务窗格。

2)命令功能区是无记忆的。每当您单击按钮时,它们就会启动一个新的无头js上下文。

3)由于没有头,因此无法打开新窗口。

4)由于功能区已从任务窗格断开,因此任何window.location更改尝试都不会重定向任务窗格。

我通过使用websocket将命令从服务器退回来“解决”了这一问题。是。说真的

顺便说一句,Websocket是我验证按钮确实有效的方式。即使我对重定向的工作方式有误,这也是一个非常有用的调试工具,因为f12调试器无法附加到命令功能区。

请用巨型充气锤为我“设计”此头的人敲打。

相关问题