gpt4 book ai didi

powershell - 是否可以通过Lync SDK(2013或其他版本)设置调用转移?

转载 作者:行者123 更新时间:2023-12-03 00:51:41 24 4
gpt4 key购买 nike

我在一家大型机构的IS部门工作。处理我们电话的Lync服务器由另一个部门处理,任何需要它们配合的解决方案都不可行。这排除了需要从Lync服务器,SEFAUtil等运行的任何需要额外特权的解决方案。

我个人的Lync 2013客户端具有一些令人讨厌的GUI菜单,可以在其中将台式电话转发到另一个号码。因此,从理论上我知道这是可能的。

我有Powershell代码(已安装大量SDK)将使用我自己的个人凭据登录。我从中抓取的博客允许脚本发送任意IM消息(对我来说不是很有用)。看起来像这样:

if (-not (Get-Module -Name Microsoft.Lync.Model)) {     
try {
Import-Module -Name (Join-Path -Path ${env:ProgramFiles} -ChildPath "Microsoft Office\Office15\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.dll")
-ErrorAction Stop
}
catch {
Write-Warning "Microsoft.Lync.Model not available, download and install the Lync 2013 SDK http://www.microsoft.com/en-us/download/details.aspx?id=36824" break
}
}

$client = [Microsoft.Lync.Model.LyncClient]::GetClient()

if ($client.State -ne [Microsoft.Lync.Model.ClientState]::SignedIn) {
$client.EndSignIn(
$client.BeginSignIn("x@x.com", "domain\johno", "youllNeverGuess", $null, $null))
}

if ($Client.State -eq "SignedIn") {
Write-Host "DEBUG: We managed to sign in!" }
}

这似乎行得通,因为如果我输入了错误的密码,它就会发出响声。

在SDK中,是否可以将 call 转移设置为特定号码?微软糟糕的文档演示了如何转发脚本通过事件处理程序捕获的传入 call ,这意味着它必须在轮询循环中运行...而我不能仅遍历要转发的帐户列表。在GUI客户端上,如果将电话​​设置为转接到某个号码,即使关闭机器电源,该电话也会停留在该电话上,因此它将向半永久性服务器发送邮件。 Lync SDK可以完成相同的工作吗?

尽管不建议使用Lync 2010,但我对基于此的解决方案感到满意。 Powershell是首选,但是如果您使用VB或C#语言编写代码,同样也可以。我不需要整个事情都放在一个银色的盘子上,只需一些提示即可使用。

最佳答案

您需要将路由信息发布到Lync服务器。其中包括您的同时响铃和转发设置等。

如果可以创建.Net解决方案,请尝试以下操作:

当您需要针对Lync服务器进行编程并且无法获得任何提升的特权时,请尝试使用UCMA并创建一个UserEndpoint。由于您知道Lync服务器地址并具有登录详细信息,因此无需其他部门的合作即可创建和验证UserEndpoint

示例(不是我的):Creating UCMA Applications with a UserApplication instance

设置端点后,您基本上就可以免费上门了。具有发布状态的功能,您可以发布路由设置。对于Lync,“状态”是一个包含诸如可用性,路由,联系方式,自定义位置等所有内容的容器。

在您的UserEndpoint上,订阅LocalOwnerPresence.PresenceNotificationReceived MSDN

使用端点登录后,此事件将触发并提供您当前的设置。在事件参数LocalPresentityNotificationEventArgs中,获取AllCategories集合,然后查找名称为PresenceCategoryWithMetaData"routing"。使用此数据创建Routing容器的新实例。
路由容器是Microsoft.Rtc.Internal.Collaboration.Routing中的Microsoft.Rtc.Collaboration.dll类。

private void OnLocalPresenceNotificationReceived(
object sender,
LocalPresentityNotificationEventArgs e)
{
var container = (from c in e.AllCategories
where string.Equals(c.Name, "routing", StringComparison.OrdinalIgnoreCase)
orderby c.PublishTime descending
select c).FirstOrDefault();

if (container != null)
{
var routing = new Microsoft.Rtc.Internal.Collaboration.Routing(container);

// You can access the routing data here...
}
}

如果您没有收到任何路由容器,则可以创建一个新实例。请注意,尽管发布新实例将覆盖您当前的所有路由设置,而不是允许您更新当前设置。

Routing类中,您可以写入以下属性:
routing.CallForwardToTargetsEnabled = true;
routing.CallForwardTo.Clear();
routing.CallForwardTo.Add("sip or tel number");
routing.UserOnlyWaitTime = TimeSpan.FromSeconds(...);

最后,发布新的路由设置:
endpoint.LocalOwnerPresence.PublishPresenceAsync(new PresenceCategory[] { 
routing
});

通过使用Lync SDK中的 GetClient()方法获取当前的Lync实例,也可以发布状态。但是,我不确定是否可以将其用于发布路由设置。您可以尝试,但在与Lync玩耍时发现了许多未公开的选项。查看以下两个资源:

How to: Publish enhanced presence information
Self.BeginPublishContactInformation

关于powershell - 是否可以通过Lync SDK(2013或其他版本)设置调用转移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com