通过UCWA(Skype for Business)发送IM的问题

时间:2019-07-01 09:24:42

标签: skype-for-business instant-messaging ucwa

我正在尝试编写一个nodeJS代码,该代码使用UCWA Web API将简单的通知发送到Skype for Business帐户,但是我没有成功。

客户在内部使用Skype for Business 2015。

要实现这一点,我遵循了下面的链接: https://www.matthewproctor.com/Send-An-IM-With-UCWA-Sending-the-IM/

看来我已经成功完成了第二部分。

在第3部分,我应该能够发送消息,该过程开始于使用POST方法请求以下URL: / ucwa / oauth / v1 / applications / 1023 ********* / communication / messagingInvitations

下面是POST数据示例:

{
  "importance":"Normal",
  "sessionContext":"33dc0ef6-0570-4467-bb7e-49fcbea8e944",
  "subject":"Sample Subject Line",
  "telemetryId":null,
  "to":"sip:scottgu@contoso.com",
  "operationId":"5028e824-2268-4b14-9e59-1abad65ff393"
}

问题1:有人知道我从哪里获得operationId参数吗?我不清楚这篇文章何时说它是在第1部分完成的。 我使用的是示例operationId,但不确定是否是导致其无法在以下步骤中正常运行的原因。

请求完成后,我正在发送消息的帐户的桌面应用程序会在屏幕的右下角弹出,其中包含我正在发送(主题)请求的帐户和标题。

如文章所述,UCWA返回了(201创建),但是将返回事件URL的正文为空。

因为我没有得到我对其进行硬编码的事件URL,所以我可以继续执行以下请求。
然后我打电话:

/ucwa/oauth/v1/applications/102........../events?ack=1

/ucwa/oauth/v1/applications/102........../events?ack=3

(我用在/ messagingInvitations请求中获得的应用程序ID替换代码102 ..........)

最后一个请求的响应返回了一个大对象,我对其进行了解析,当状态(itemEvents._embedded.messaging.state)等于“已连接”时,我得到了_embedded.messaging._links.sendMessage。

使用上面的URL,我发出下一个请求(POST),例如:

<hostname>/ucwa/oauth/v1/applications/10682720060/communication/conversations/f96afecd-8893-4cc2-a972-06bcd0b363cd/messaging/messages

然后我得到响应,

{"code":"NotFound","message":"The requested resource couldn\u0027t be found."}

有帮助吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

我目前也在与UCWA作战,这是我到目前为止建立的:

问题1:有人知道我从哪里获得operationId参数 来自?

当您使用“ POST / ucwa / oauth / v1 / applications”创建应用程序时,您会收到JSON响应,其中包含您的OperationID。它将在“ _embedded”>“通信”部分中。但是,由于OperationID值是字段的 key ,因此很难获得,因为只有线索“请在PUT请求中传递此值”作为字段值。

因为我没有将事件URL进行硬编码,所以我可以继续进行以下请求。

在创建应用程序响应中,您还将在“ _links”>“事件”部分中找到事件链接。

以下是应用程序响应的示例:

{
    "culture":"en-US",
    "userAgent":"UCWA Test",
    "_links":{
        "self":{"href":"/ucwa/oauth/v1/applications/101********"},
        ...
        "events":{"href":"/ucwa/oauth/v1/applications/101********/events?ack=1"}
    },
    "_embedded":{
        "me":{
            ...
        },
        "people":{
            ...
        },
        "onlineMeetings":{
            ...
        },
        "communication":{
            "0000aaaa-00aa-00aa-00aa-000000aaaaaa":"please pass this in a PUT request",
            ...
        }
    },
    "rel":"application"
}

对于发送消息错误,我真的不知道您的邮件可能涉及什么(您有HTTP状态代码吗?)。也许检查您的标头,尤其是“ Content-Type”标头,如果“ Content-Type”标头不正确,UCWA不会轻易识别我们发送给它的内容。即使它应该是400或415错误,也经常会导致500错误。