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--图灵机器人的更多相关文章

  1. 【chrome插件】web版微信接入图灵机器人API实现自动回复

    小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...

  2. 使用图灵机器人API实现聊天机器人

    使用图灵机器人的API需要先注册,获取key才行,这我就不说了,自己到http://www.tuling123.com/注册一个账号即可. 下面就是一个简单的python调用API实现聊天机器人的简易 ...

  3. 用django实现一个微信图灵机器人

    微信的post请求格式是xml,所以django需要做的就是将xml请求解析出来,把content发送到图灵机器人接口, 接口返回的json数据把主要内容给解析出来,然后重新封装成xml返回给微信客户 ...

  4. Java接入图灵机器人,实现与机器人聊天

    很多人都玩过微信,其中就有与机器人聊天的功能:

  5. 机器人api(图灵机器人)

    图灵机器人,是基于自然语言解析的智能机器人,已经免费开放了机器人api接口,有需求的同学能够去试试. 图灵机器人官网:http://www.tuling123.com 图灵机器人体验:http://w ...

  6. 调用图灵机器人API实现Android智能机器人

    非常感谢CSDN博客上的鸿洋哥,他贴出的源码是我所做的工作的基础,鸿洋哥博客链接http://blog.csdn.net/lmj623565791/article/details/38498353 下 ...

  7. 个人微信接入图灵机器人(基于Python)

    编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号, 创建机器人, 如果只是学习的话,可以使用2免费版 , 一个账号最多可以创建5个机器人 ...

  8. Python 使用图灵机器人实现微信聊天功能

    首先需要去图灵官网创建一个属于自己的机器人然后得到apikey. 一.自动与指定好友聊天 # -*- coding: utf-8 -*- """ Created at 2 ...

  9. 人工智能-调百度AI接口+图灵机器人

    1.登陆百度AI的官网 1.注册:没有账号注册 2.创建应用 3.创建应用 4.查看应用的ID 5.Python代码 from aip import AipSpeech APP_ID = " ...

  10. flask 第六章 人工智能 百度语音合成 识别 NLP自然语言处理+simnet短文本相似度 图灵机器人

    百度智能云文档链接 : https://cloud.baidu.com/doc/SPEECH/index.html 1.百度语音合成 概念: 顾名思义,就是将你输入的文字合成语音,例如: from a ...

随机推荐

  1. Xcode 清理存储空间(转)

    一 移除 Xcode 运行安装 APP 产生的缓存文件(DerivedData) 只要重新运行Xcode就一定会重新生成,而且会随着运行程序的增多,占用空间会越来越大.删除后在重新运行程序可能会稍微慢 ...

  2. 放大镜效果 --- enlarge.js

    html页面: 注释:遮罩层的大小取决于   ===>layerwidth/layerheight = largewidth/largeheight  enlarge.js页面 /*   jqu ...

  3. 记录我的 python 学习历程-Day05 字典/字典的嵌套

    一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...

  4. [TimLinux] JavaScript 中循环执行和定时执行

    1. 两对函数 // 循环执行 // 在每个毫秒数之后,调用函数 var timeid = window.setInterval(函数名, 毫秒数); window.clearInterval(tim ...

  5. 2017 CCPC秦皇岛 E题 String of CCPC

    BaoBao has just found a string  of length  consisting of 'C' and 'P' in his pocket. As a big fan of ...

  6. ACM-ICPC 2018 焦作赛区网络预赛 B题 Mathematical Curse

    A prince of the Science Continent was imprisoned in a castle because of his contempt for mathematics ...

  7. 介绍一款自己实现的rabbit轻量级组件和使用方法

    DotNetCore.RabbitMQ.Extensions介绍 这是一个 基于.NETStandard 2.0的Rabbit轻量级框架,可以让开发人员无需关注底层变动,专注编写业务代码,从而达到便捷 ...

  8. Python3 函数进阶3

    目录 匿名函数 定义匿名函数 匿名函数的使用 内置函数 匿名函数 定义匿名函数 我们之前定义的函数都是有名函数, 我们可以通过函数名来调用 匿名函数顾名思义就是一种没有绑定函数名的函数, 使用一次既被 ...

  9. IUSEP研修报告

    目录 Introduction Alberta - Edmonton University of Alberta IUSEP Schoolwork and Project Principle of F ...

  10. eclipse配置svn导出项目

    eclipse安装svn 菜单栏help-->eclipse marketspace-->find中搜索subclipse,安装-->ok windows-->show vie ...