QT--图灵机器人
QT--图灵机器人
1.登陆图灵机器人官网注册一个图灵机器人
2.获取apikey
3.pro文件添加
QT += core gui network
4.头文件
#include <QNetworkAccessManager> //三个http必须头文件
#include <QNetworkReply>
#include <QNetworkRequest>
5.widget.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QNetworkAccessManager> //三个http必须头文件
#include <QNetworkReply>
#include <QNetworkRequest>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
QNetworkAccessManager *manager;
QNetworkReply *reply;
QNetworkRequest *requst;
QJsonObject *JsonData; //封装的json信息
QString getJson(); //解析返回的json信息
void Json_data(); //封装json信息
private slots:
void doProcessReadyRead();
void on_pushButton_clicked();
void doProceesFinished();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
6.widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QFile>
#include <QPixmap>
#include <QJsonObject> //json
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
Json_data();
manager = new QNetworkAccessManager(this);
requst = new QNetworkRequest;
}
Widget::~Widget()
{
delete ui;
}
/* HTTP通信 */
void Widget::on_pushButton_clicked()
{
requst->setUrl(QUrl("http://openapi.tuling123.com/openapi/api/v2")); //填入图灵机器人接口地址
requst->setHeader(QNetworkRequest::ContentTypeHeader,"application/json"); //设置数据类型为json格式
QJsonDocument document=QJsonDocument(*JsonData); //将封装的json格式数据转为字节数组形式
QByteArray array = document.toJson();
reply = manager->post(*requst,array); //以post方式发送请求
connect(reply, &QIODevice::readyRead, this, &Widget::doProcessReadyRead); //收到返回信息则发出可读信号
connect(reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error), //出现异常
[=](QNetworkReply::NetworkError code)
{
switch((int)code)
{
case QNetworkReply::ConnectionRefusedError:
qDebug() << "远程服务器拒绝连接(服务器不接受请求)";
break;
case QNetworkReply::HostNotFoundError:
qDebug() << "找不到远程主机名(无效的主机名)";
break;
case QNetworkReply::TimeoutError:
qDebug() << "与远程服务器的连接超时";
break;
default:
break;
}
});
connect(reply, &QNetworkReply::finished,this,&Widget::doProceesFinished);
}
/* 获取信息 */
void Widget::doProcessReadyRead()
{
QString text = getJson(); //解析返回的json信息
ui->textEdit->append(text);
qDebug() << text;
}
/* 封装要发送的json格式信息 */
void Widget::Json_data()
{
QJsonObject provideInfo;
QJsonObject Text;
QJsonObject Image;
QJsonObject Info;
QJsonObject UserLocation;
QString data = ui->lineEdit->text(); //输入发送的信息
Text.insert("text",data);
UserLocation.insert("city","成都"); //后面这一块不必须
UserLocation.insert("province","四川");
UserLocation.insert("street","武侯区");
Info.insert("location",UserLocation);
provideInfo.insert("inputText",Text);
provideInfo.insert("inputImage",Image);
provideInfo.insert("selfInfo",Info);
QJsonObject user;
user.insert("apiKey","2b244339acb64a3d8a8e1b4455a21ead"); // 填入自己注册的图灵机器人apiKey 必须
user.insert("userId",""); //填入 id,必须,否则会显示---没有上传userId!
JsonData = new QJsonObject;
JsonData->insert("reqType",);
JsonData->insert("perception",provideInfo); //嵌套
JsonData->insert("userInfo",user);
qDebug() << *JsonData;
}
/* 解析返回的json格式信息 */
QString Widget::getJson()
{
QByteArray str = reply->readAll(); //获取信息
QJsonObject json1 = QJsonDocument::fromJson(str).object();
QJsonArray json2 = json1.value("results").toArray();
QJsonObject json3 = json2[].toObject(); //直接通过下标获取
// QJsonObject json3;
// for ( int i = 0; i < json2.size(); i++ ) //循环遍历获取
// {
// if ( json2[ i ].isObject() )
// {
// json3 = json2[i].toObject();
// qDebug() << i;
// }
// }
QJsonObject json4 = json3.value("values").toObject();
QString text = json4.value("text").toString();
return text;
}
void Widget::doProceesFinished()
{
qDebug() <<"结束";
}
7.widget.ui文件
QT--图灵机器人的更多相关文章
- 【chrome插件】web版微信接入图灵机器人API实现自动回复
小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...
- 使用图灵机器人API实现聊天机器人
使用图灵机器人的API需要先注册,获取key才行,这我就不说了,自己到http://www.tuling123.com/注册一个账号即可. 下面就是一个简单的python调用API实现聊天机器人的简易 ...
- 用django实现一个微信图灵机器人
微信的post请求格式是xml,所以django需要做的就是将xml请求解析出来,把content发送到图灵机器人接口, 接口返回的json数据把主要内容给解析出来,然后重新封装成xml返回给微信客户 ...
- Java接入图灵机器人,实现与机器人聊天
很多人都玩过微信,其中就有与机器人聊天的功能:
- 机器人api(图灵机器人)
图灵机器人,是基于自然语言解析的智能机器人,已经免费开放了机器人api接口,有需求的同学能够去试试. 图灵机器人官网:http://www.tuling123.com 图灵机器人体验:http://w ...
- 调用图灵机器人API实现Android智能机器人
非常感谢CSDN博客上的鸿洋哥,他贴出的源码是我所做的工作的基础,鸿洋哥博客链接http://blog.csdn.net/lmj623565791/article/details/38498353 下 ...
- 个人微信接入图灵机器人(基于Python)
编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号, 创建机器人, 如果只是学习的话,可以使用2免费版 , 一个账号最多可以创建5个机器人 ...
- Python 使用图灵机器人实现微信聊天功能
首先需要去图灵官网创建一个属于自己的机器人然后得到apikey. 一.自动与指定好友聊天 # -*- coding: utf-8 -*- """ Created at 2 ...
- 人工智能-调百度AI接口+图灵机器人
1.登陆百度AI的官网 1.注册:没有账号注册 2.创建应用 3.创建应用 4.查看应用的ID 5.Python代码 from aip import AipSpeech APP_ID = " ...
- flask 第六章 人工智能 百度语音合成 识别 NLP自然语言处理+simnet短文本相似度 图灵机器人
百度智能云文档链接 : https://cloud.baidu.com/doc/SPEECH/index.html 1.百度语音合成 概念: 顾名思义,就是将你输入的文字合成语音,例如: from a ...
随机推荐
- luogu P1509 找啊找啊找GF
题目背景 sqybi现在看中了n个MM,我们不妨把她们编号1到n.请MM吃饭是要花钱的,我们假设请i号MM吃饭要花rmb[i]块大洋.而希望骗MM当自己GF是要费人品的,我们假设请第i号MM吃饭试图让 ...
- [TimLinux] Python IDE工具
1. 首推IDE工具PyCharm JetBrains公司推出的系列IDE工具中支持Python编译语言的开发工具,基本上可以认为是行业第一IDE工具了,分为社区版和专业版,可以创建纯Python单文 ...
- axios报错: Cannot read property 'protocol' of undefined ....
错误: Uncaught (in promise) TypeError: **Cannot read property 'protocol' of undefined ... 源码: 完整错误: im ...
- BZOJ 1861书架
小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些书太有吸引 ...
- 基于iCamera测试AR0134 960p 全局快门相机模块小结
基于iCamera测试AR0134 960p 全局快门相机模块小结 首先看看此模块的特性 AR0134 全局曝光 CMOS模块 1280*960像素 5.3 V/lux-sec 摄像头模块实物靓照(上 ...
- 网络基础TCP/IP
TCP/IP协议族各层的作用如下 应用层 决定了向用户提供应用服务时通信的活动: 各类通用的应用服务.FTP(File Transfer Protocol,文件传输协议).DNS(Domain Nam ...
- 基于RT-Thread的开源飞控StarryPilot
背景描述 近年来无人机应用市场日趋火热,无人机开始被应用在多个领域之中,比如航拍,植保,运输,安防等.随着应用场景的增加,对于无人机的大脑一飞控,的性能和功能要求也变得越来越高.国内具有一大批优质的无 ...
- JavaScript数组去重(12种方法,史上最全)
参考博客:https://segmentfault.com/a/1190000016418021?utm_source=tag-newest
- 4个点让你彻底明白Redis的各项功能
前言 先看一下Redis是一个什么东西.官方简介解释到: Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用.同时支持st ...
- Mysql数据库的主从与主主
前言: 首先,我们得知道我们为什么要做数据库的主从与主主,而后,再讨论他们的优劣与特点:为什么要做主从呢?因为Mysql数据库没有增量备份的机制,当数据量太大的时候备份是个难以解决的问题.但是mysq ...