天猫精灵打开电脑 语音控制电脑

“天猫精灵”
“哎,我在!”
“打开电脑”


上了一天班,回到家就想静静的玩会游戏,吼一句天猫精灵,立马帮你开机,多么舒服装x的体验。然而现实是骨感的,精灵无此功能,网上有人让弄个智能插排+通电自启,这明显无法满足我们的高逼格。

文章目录

  • 前言
  • PHP + Nginx 整合~CentOS8.0~
    • 安装Nginx
    • 安装PHP
    • 启动服务
    • 整合结果检查
    • 编写wol.php用于处理逻辑
  • Aligenie 开发者平台
    • 创建技能
    • 创建实体
    • 创建意图
    • 设置回复逻辑
    • 测试

前言

准备工作:

  1. 外部网络可以访问的一个接口,用于逻辑处理,如果你的服务器外网不能访问,就不要整php+nginx,别想着在虚拟机里面搭个,没用!
  2. 电脑有外网ip,可以外部魔术包唤醒,网卡方面需要支持,一般网卡都支持
  3. 博主搭建的php+nginx可以提供给有兴趣的小伙伴(之前买的服务器已经到期了,所以暂时无法提供给小伙伴)
  4. 双11阿里云针对新人的活动真心不错,80元1核2G1M的服务器用来练练手,着实不错

PHP + Nginx 整合CentOS8.0

安装Nginx

dnf install -y nginx #安装nginx
cd /etc/nginx
## 备份nginx.conf
cp nginx.conf nginx.conf_`date +%Y%m%d`
## grep -Ev '#|^%|^$' nginx.conf_`date +%Y%m%d` > nginx.conf
## 新增index.php用于测试
echo -e "<?php \nphpinfo();\n?>" > /usr/share/nginx/html/index.php
## 赋权
chown nginx:nginx -R /usr/share/nginx/htmlvi /etc/nginx/nginx.conf
## 参照下面conf进行修改
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {worker_connections 1024;
}
http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 2048;root		/usr/share/nginx/html;include             /etc/nginx/mime.types;default_type        application/octet-stream;include /etc/nginx/conf.d/*.conf;server {listen       8765 default_server;listen       [::]:8765 default_server;server_name  _;include /etc/nginx/default.d/*.conf;location / {}location ~ \.php$ {fastcgi_pass unix:/run/php-fpm/www.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}
}

安装PHP

dnf install -y php #安装php
dnf install -y php-json #安装php-json

启动服务

## 服务启动php和nginx
systemctl start nginx
systemctl start php-fpm
## 服务器检查
# ps -ef|grep nginx
# ps -ef|grep php-fpm
## 停止命令
# systemctl stop nginx
# systemctl stop php-fpm
## 重启命令
# systemctl restart nginx
# systemctl restart php-fpm

整合结果检查

看到这个页面说明整合完成

phpinfo

编写wol.php用于处理逻辑

cd /usr/share/nginx/html
vi wol.php
<?php
$tmpData = strval(file_get_contents("php://input"));
$dataArray = json_decode($tmpData, true);
if($dataArray == null || $_SERVER['HTTP_HOSTNAME'] == null){header('location: /404.html');
}else{$hostName = $_SERVER['HTTP_HOSTNAME'];$ip = $_SERVER['HTTP_IP'];if($ip == "null"){$ip = gethostbyname($hostName);}$request = $dataArray["slotEntities"];$skillName = $dataArray["skillName"];if($skillName == "打开电脑"){if($request[0]["intentParameterName"] == "place"){//查位置$place = $request[0]["slotValue"];//确认电脑的其他信息$customArray = explode("|",$request[1]["slotValue"]);for($i=0;$i<count($customArray);$i++){if((explode(",",$customArray[$i]))[0] == $place){$placeArray = explode(",",$customArray[$i]);}}}else{//查位置$place = $request[1]["slotValue"];//确认电脑的其他信息$customArray = explode("|",$request[0]["slotValue"]);for($i=0;$i<count($customArray);$i++){if((explode(",",$customArray[$i]))[0] == $place){$placeArray = explode(",",$customArray[$i]);}}}$placeArray[0] = $ip;/** 生成唤醒包*/$addr_byte = explode(':', $placeArray[1]);$hw_addr = '';for ($a=0; $a<6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));$msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);for ($a=1; $a<=16; $a++) $msg .= $hw_addr;$handle = stream_socket_client('udp://'.$placeArray[0].':'.$placeArray[2],$errno,$errstr);if (!$handle) {die('ERROR:'.$errno. '- '.$errstr.'\n');}fwrite($handle,$msg);fclose($handle);echo json_encode(array('returnCode'=>'0','returnValue'=>array('reply'=>$place.'的电脑已经打开了','resultType'=>'RESULT','executeCode'=>'SUCCESS')));}else{header('location: /404.html');}
}
?>

前面的操作主要用于逻辑判断,根据个人喜欢,也可以用java,目的很简单,当请求/wol.php页面时候,向目标服务器发送魔术包,wol.php中写了魔术包的生成,以及从Header中获取地址,mac信息

Aligenie 开发者平台

https://iap.aligenie.com/home
需要自行注册为开发者,填写自己的个人信息等等

创建技能

创建语音技能

技能调用词,如果选择无调用词,天猫精灵无法语音识别,需要修改为有调用词,名字设置为“打开电脑”。技能创建完成后,能力申请页可以不做调整

创建实体

我们先创建实体,然后创建意图
创建了两个实体custom和place

实体1

位置实体中设置两个变量“卧室”和“客厅”,这个可以自己根据自己的情况进行调整,后续会说到意图里面传参的问题,这个要和自定义实体对应上,不要自定义里面有三个位置信息,而这里只有两个,会导致不匹配

位置

自定义实体中没有写任何实体值,因为这个实体目的是用于往逻辑服务器传值,我们只需要在意图里面加上默认值即可

自定义

创建意图

创建一个名为唤醒电脑的意图

意图

设置单轮对话


此处是重点:

  1. 取消精灵追问,因为过程太过简单,只要一次通话即可解决所有问题
  2. 位置实体设置一个默认值
  3. 自定义实体的默认值,如果用我的wol.php,请参照这个例子填写,位置不要乱,内容是: 卧室,00:1B:00:40:00,3453|客厅,00:1C:00:04:00:D2,3454
    位置信息,mac地址,端口 如果有多条用竖线分开,并且要保证和位置实体对应的上,例如有三个位置电脑:
    卧室,00:00:00:00:00,123|客厅,00:00:00:00:00,124|书房,00:00:00:00:00,125 对应的实体取值应该是:卧室|客厅|书房

在这里插入图片描述

设置回复逻辑

选择默认逻辑WEBHOOK
下载认证文件,将txt存放至/usr/share/nginx/html/aligenie,具体教程官方文档也有https://www.aligenie.com/doc/357834/xwndex
url:对外开放的接口地址
hostname:需要开机的外网访问地址
ip:没有固定ip可以为null
点击提交后会对接口地址进行认证(如果目前没有外部服务器,可以私信我)(之前买的服务器已经到期了,所以暂时无法提供给小伙伴)

回复逻辑

测试

在这里插入图片描述

在线测试几次后就可以真机测试,自己使用,无需发布

纯手打,各位看官给个赞吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51264.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亲测超好用的一款流程图制作软件(内含制图技巧分享)

什么是流程图&#xff1f;流程图是思维导图的一种图形模式&#xff0c;通过固定的流程和图形组合而成&#xff0c;通常应用于IT业、建筑业、数字统计行业中。因为思维导图慢慢热门起来&#xff0c;所以其他领域也都开始慢慢学习这款思维工具&#xff0c;并通过思维导图工具整理…

7款流程图制作软件大盘点!轻松绘制流程图

流程图可能是我们使用最广泛的一种图形图表&#xff0c;几乎在各个领域都会用到&#xff0c;诸如系统流程图、产品流程图、数据流程图……借助流程图&#xff0c;我们可以将事物的结构、任务的进程、甚至是算法的思路都有效视觉化。 流程图的广泛应用&#xff0c;也直接催生出…

如何做流程图?这几个实用的制作流程图方法分享给你

说到流程图的制作&#xff0c;相信大家都并不陌生&#xff0c;在日常的工作和学习中&#xff0c;我们都会根据需求接触到各种各样的流程图&#xff0c;有时还要自己动手绘制流程图并使用&#xff0c;但你是否会因为不会绘制流程图而感到苦恼呢&#xff1f;没关系&#xff0c;今…

ChatGPT一分钟做流程图

ChatGPT一分钟做流程图它能不能帮我们制作流程图呢&#xff1f;必须是可以的&#xff0c;今天我们再来介绍一个如何用ChatGPT快速制作流程图的方法。 下面以PowerBI分析流程为例&#xff0c;先向ChatGPT进行提问&#xff1a; 你是一个高级数据分析师&#xff0c;熟悉数据分析…

chatgpt赋能python:用Python计算球的表面积

用Python计算球的表面积 简介 球是一个三维几何体&#xff0c;它的表面积是一个重要的物理量。计算球的表面积通常需要使用高等数学公式&#xff0c;而Python可以很方便地进行数学计算&#xff0c;因此在计算球的表面积时&#xff0c;Python也是一种十分有用的工具。 本文将…

chatgpt赋能python:**Python计算s=a+aa+aaa的方法**

Python 计算 saaaaaa 的方法 Python 是一种高级编程语言&#xff0c;它的简单易学、可读性强、语法简单、运行效率高等特点受到了越来越多的程序员的关注和喜爱。在 Python 中&#xff0c;我们可以使用简单的代码计算多种复杂的数学问题。下面&#xff0c;我们将介绍如何使用 …

chatgpt赋能python:Python最大公约数计算代码

Python最大公约数计算代码 Python是一种高级编程语言&#xff0c;广泛应用于科学、工程和大数据分析领域。它具有简单易学、灵活性强、代码可读性高等优点&#xff0c;因此在软件开发和数据分析等领域得到了广泛的应用。Python不仅有丰富的库和工具&#xff0c;还有许多开发者…

chatgpt赋能python:Python中如何使用三角函数

Python中如何使用三角函数 三角函数是学习高等数学和物理学中不可缺少的一部分。在Python中&#xff0c;我们可以轻松地使用三角函数来计算角度、距离和速度等参数。本文将介绍Python中的三角函数&#xff0c;包括sin、cos和tan&#xff0c;以及如何使用它们进行计算。 1. 什…

chatgpt赋能python:Python中的三角函数介绍

Python中的三角函数介绍 Python作为一种高级编程语言&#xff0c;可以处理基础算术运算、三角函数等高等数学的操作。其中&#xff0c;三角函数是常用的数学函数之一&#xff0c;Pyhon中的三角函数包括正弦函数、余弦函数、正切函数等。 正弦函数 正弦函数在三角学中是最基本…

chatgpt赋能python:Python科学计算利器:Numpy

Python科学计算利器&#xff1a;Numpy Python是一门广受欢迎的编程语言&#xff0c;得益于其简洁易读、易学易用、可读性高等特点&#xff0c;被广泛应用于各个领域。在科学计算领域&#xff0c;Python也有着非常强大的工具包&#xff0c;其中Numpy是一个备受关注的库。 Nump…

chatgpt赋能python:Python中ln的用法详解

Python中ln的用法详解 在Python编程中&#xff0c;我们经常会使用到ln函数&#xff0c;该函数用于求一个数的自然对数&#xff08;以e为底的对数&#xff09;&#xff0c;在数学中也称为对数函数。在本文中&#xff0c;我们将详细介绍Python中ln函数的用法和常见应用场景&…

chatgpt赋能Python-python_aip

介绍Python API Python API即Python应用程序编程接口&#xff0c;是一个开发Python程序的重要工具。Python API提供了一系列开发接口&#xff0c;使得Python程序具有可应用性、可扩展性和可维护性。 Python API是一个功能强大的编程工具&#xff0c;可以帮助开发者简化代码重…

chatgpt赋能Python-python_decode函数的用法

Python Decode函数&#xff1a;用法解析 Python语言是一种解释性、面向对象、动态数据类型的高级程序设计语言。它具有简单易学、代码优雅、开发效率高等特点&#xff0c;被广泛应用于数据处理、网络编程、图像处理等领域。其中&#xff0c;decode函数是一个非常常用且重要的函…

chatgpt赋能python:Python解密AES,深入探究

Python解密AES&#xff0c;深入探究 如今&#xff0c;数据安全已成为各公司及组织日常运营中的必修课&#xff0c;而数据加密技术也逐渐成为了很多开发者必备的技能之一。其中&#xff0c;AES是一种较为常用的加密算法&#xff0c;其是否能被python解密也成为了许多开发者关注…

clipboardData:在编辑框中支持复制粘贴图片

这个版本目前不支持移动和ie10及其以下&#xff0c;避免浪费浏览者时间 在编辑框里支持粘贴图片&#xff0c;可省去用户截图保存、再删除的麻烦。查阅了许多资料都是两三年前的了&#xff0c;现在clipboardData的支持程度也比较高了&#xff0c;所以可以很方便的使用了&#x…

VNCViewer实现与WIN端文本复制粘贴

主机系统&#xff1a; Win10 View端系统&#xff1a; Ubuntu 16.04 VNCViewer&#xff1a; 6.17 今天踩的第二个坑&#xff0c;主要还是因为懒&#xff0c;有时候懒得打那么多字&#xff0c;就想着和虚拟机一用弄个Vmtools多好&#xff0c;直接复制粘贴。 网上大部分给出的…

如何判断2台设备是否在同一个局域网?

需要局域网环境debug&#xff0c;但是家里只有一个无线路由器台式机(有线连接路由器)开发板&#xff08;无线连接到路由器&#xff09;&#xff0c;因此好奇台式机和开发板是否是同一局域网&#xff1f; 1.台式机输入ipconfig&#xff0c;获取网络信息。 ip 地址是&#xff1a…

ChatGPT大战Copilot,谁才是最强王者

巨人之战&#xff1a;GitHub Copilot vs ChatGPT ⚔️⚔️ 微信搜索关注《Java学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 ChatGPT的发布在编程社区引起了波澜&#xff0c;因为它可以产生令人难以置信的代码片段。 它与去年发布的GitHub Copilot相比如何&am…

什么?作为程序员你还不知道人工智能搜索引擎?

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

89岁学会做PPT,巴菲特:最好的投资,是投资自己

这世上&#xff0c;那些真正成功的人&#xff0c;都有一个共同特质&#xff1a;能够找到事物的底层逻辑&#xff0c;并能迁移运用它。 如何才能够提升认知&#xff0c;找到事物的底层逻辑&#xff1f;总结下来&#xff0c;就是重视常识&#xff0c;及常识的积累。 何为常识&am…