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 ...
随机推荐
- redis位图巧用,节约内存
最近要做一个圣诞抽奖活动,需要记录每天用户签到的记录,以前一般都是用普通的字符串数据类型,每个用户的签到用一个 key // 用户10在活动第一天的签到key为record:1:10 $key = & ...
- Ubuntu1604环境下编译安装mariadb10.2.26
环境准备:阿里云ecs Ubuntu1604下,编译安装mariadb10-2.26 1.先安装一些初试环境所需要的工具软件包 apt install -y iproute2 ntpdate tcpd ...
- HDU 2444 The Accomodation of Students (二分图存在的判定以及最大匹配数)
There are a group of students. Some of them may know each other, while others don't. For example, A ...
- tensorflow处理mnist(二)
用卷积神经网络解决mnist的分类问题. 简单的例子 一行一行解释这个代码. 这个不是google官方的例子,但是很简洁,便于入门.tensorflow是先定义模型,最后赋值,计算.为了讨论问题方便, ...
- 贝壳2020——Java校招笔试题
算法题4道: 题目描述: 给出n个正整数,要求找出相邻两个数字中差的绝对值最小的一对数字,如果有差的绝对值相同的,则输出最前面的一对数.(2<n<=100,正整数都在10^16范围内) 输 ...
- Java中真的只有值传递么?
Java中真的只有值传递么? (本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨) 回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法. 1.基本类型或基本类型 ...
- 业级PPTP服务器搭建企
搭建企业级PPTP服务器 分类: Linux服务篇 undefined 本文收录在企业项目实战系列 一.VPN 介绍 1.介绍 虚拟私人网络(英语:Virtual Private Network, ...
- 【NPM】使用问题记录
[NPM]使用问题记录 =========================================================================== 1.MSBUILD : ...
- webpack学习2.1 模块化开发(JS模块化&CSS模块化)
一.JS模块化 命名空间,COMMONJS,AMD/CMD/UMD,ES6 module 1.什么是命名空间 库名.类别名.方法名 弊端:在命名空间重复生命,要记住完整的路径名(而且很长) var N ...
- Python面向对象-访问权限public和private
上一节我们介绍了,Class内部可以有属性和方法,外部代码通过直接调用实例的方法来操作数据,这样就可以隐藏内部的逻辑实现:同时,外部代码还是可以自由的修改实例的属性和增加方法. 但是有时候,我们不想这 ...