通过 Cortana 发送推送通知

Send push notification via Cortana

我正在用 C# 编写一个程序来获取系统的 public IP 并在它发生变化时通知用户新 IP。问题是我有两种方式通知用户:电子邮件或 Cortana。对于第一个(电子邮件),我需要一个我没有的匿名电子邮件发件人,或者要求用户提供 his/her 凭据(大多数人不会)。第二种方式 (Cortana):假设我在家用 PC 上安装了该程序,并且在 Windows 10 和 Windows Phone 上启用了 Cortana。如果我家用电脑的 public IP 地址发生变化,Cortana 会在我的 phone 上显示一条通知,包括我的新 IP 地址。

我在 github 上看到了一个 API(不能这样做)和面向开发人员的 Cortana。我以为 "actions" 可以完成这项工作,但在阅读了描述后,我以某种方式确定它不能。

我该怎么做?

我做了什么: 我为 Windows 10

编写了一个小程序

https://www.microsoft.com/en-us/store/apps/remotecmd/9nblggh4vr31

和服务器端应用程序

http://naryhd.com/RemoteCMDServerBETA.zip

此应用程序可让您在 windows phone 上使用 PC 的 cmd。 (本地)

现在我想添加 "access from internet",(我这样做了,但出于安全原因我禁用了它,现在我有一个更安全的解决方案)

为了从互联网访问它,我做了 3 件事

命令 1:

netsh http add urlacl url=http://ip:port/ user=everyone

命令 2:

netsh advfirewall firewall add rule name=\"RemoteCMDserver2\" dir=in protocol=tcp localport=port profile=public | private remoteip=localsubnet action=allow

转发那个端口:

var discoverer = new NatDiscoverer();
        var cts = new System.Threading.CancellationTokenSource(10000);
        var device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts);
        await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, port, port, "REMOTECMD"));

我使用 nuget 的 open.nat 来做端口转发。

我使用此代码获取 PC 的 public IP:

var discoverer = new NatDiscoverer();
var device = await discoverer.DiscoverDeviceAsync();
var ip = await device.GetExternalIPAsync();

我将该 IP 保存在一个文本文件中,并每分钟重复检查一次,如果它发生变化,它将保存该 IP 并将该 IP 发送给用户(目前通过电子邮件),但我想发送它小娜。

你现在不能用 Cortana 做到这一点。您可以在 Phone 上拥有一个在操作中心或动态磁贴上显示推送通知的应用程序。

这里有一些有用的链接:

Toast Notification and Action Center Overview for Windows 10

Inside Windows Platform | How to Add Push Notifications to Your App