通过 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
我正在用 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