升讯威在线客服系统的并发高性能数据处理技术:对接百度自动翻译

在线,客服,系统,并发,高性能,数据处理,技术,对接,百度,自动,翻译 · 浏览次数 : 10

小编点评

## 实现效果客服端程序 **原文:** ``` string q = "apple"; string from = "en"; string to = "zh"; string appId = "2015063000000001"; Random rd = new Random(); string salt = rd.Next(100000).ToString(); string sign = EncryptString(appId + q + salt + secretKey); string url = "http://api.fanyi.baidu.com/api/trans/vip/translate?\"; url += "q=\" + HttpUtility.UrlEncode(q); url += "&from=\" + from; url += "&to=\" + to; url += "&appid=\" + appId; url += "&salt=\" + salt; url += "&sign=\" + sign; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.UserAgent = null; request.Timeout = 6000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); Console.WriteLine(retString); Console.ReadLine(); ``` **代码解析:** * 代码首先定义了几个变量,包括访问的网站的关键词、来源和目标语言代码,以及 AppID 和密钥。 * 然后创建了一个 MD5 对象用于计算字符串的 MD5 值。 * 使用 `Random` 随机生成一个字符串用于填充 `salt` 变量中。 * 使用 `EncryptString` 函数对 `appId`、`q`、`salt` 和 `secretKey` 进行加密,并将加密后的字符串存储在 `sign` 中。 * 创建了一个 `url`,包含所有参数,并使用 `WebRequest` 创建请求。 * 设置请求方法、内容类型、用户代理和超时时间。 * 获取响应并读取响应内容。 * 使用 `StreamReader` 读取响应内容并将其转换为字符串。 * 关闭所有资源。 **简要说明:** * 代码展示了一种使用 `MD5` 和字符串加密的技术来实现对 AppID 和密钥的安全处理。 * 通过创建请求和读取响应,客服端能够获取访客浏览的信息。

正文

我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。

最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。
客户组织多名客服上线后,所有员工同一时间打开访客页面疯狂不停的给在线客服发消息,系统稳定无异常无掉线,客服回复消息正常。消息实时到达无任何延迟。

https://kf.shengxunwei.com/


我会通过一系列的文章详细分析升讯威在线客服系统的并发高性能技术是如何实现的,使用了哪些方案以及具体的做法。

本文将详细的介绍百度翻译接口的注册、开通、对接全过程,以及 源代码 ,希望对你有用。

先看实现效果

客服端程序以原文和译文对照的方式显示。

访客端以访客语言显示。

以设置默认翻译所有访客的消息,也可以由客服根据不同访客自行决定是否翻译。

百度翻译的对接使用

访问百度翻译开放平台,注册账户并认证。

https://fanyi-api.baidu.com

开通通用翻译 API

注意:

  • 非常见语种(如:乌克兰、菲律宾、印尼),仅企业认证尊享版可调用,未认证的非尊享版接口将返回 58001 错误。
  • 请选择开通“尊享版”。“标准版” QPS 只有 1,每秒只允许调用 1 次翻译接口,无法满足客服系统正常使用需要。

创建应用

“服务器回调地址” 留空不填。
“服务器地址”可留空不填,也可填写部署客服系统的服务器 IP 地址。

获取 APP ID 和 密钥

进入“开发者信息”画面,查看“申请信息”中的 APP ID密钥,将其保存备用,在随后的客服系统主程序配置中使用。

使用 C# 调用翻译接口

接入方式
翻译API通过 HTTP 接口对外提供多语种互译服务。只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。

通用翻译API HTTPS 地址:
https://fanyi-api.baidu.com/api/trans/vip/translate

签名生成方法
签名是为了保证调用安全,使用 MD5 算法生成的一段字符串,生成的签名长度为 32 位,签名中的英文字符均为小写格式。

生成方法:
Step1. 将请求参数中的 APPID(appid), 翻译 query(q,注意为UTF-8编码),随机数(salt),以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥的顺序拼接得到字符串 1。
Step2. 对字符串 1 做 md5 ,得到 32 位小写的 sign。
注:

  1. 待翻译文本(q)需为 UTF-8 编码;
  2. 在生成签名拼接 appid+q+salt+密钥 字符串时,q 不需要做 URL encode,在生成签名之后,发送 HTTP 请求之前才需要对要发送的待翻译文本字段 q 做 URL encode;
    3.如遇到报 54001 签名错误,请检查您的签名生成方法是否正确,在对 sign 进行拼接和加密时,q 不需要做 URL encode,很多开发者遇到签名报错均是由于拼接 sign 前就做了 URL encode;
    4.在生成签名后,发送 HTTP 请求时,如果将 query 拼接在 url 上,需要对 query 做 URL encode。

输入参数
请求方式: 可使用 GET 或 POST 方式,如使用 POST 方式,Content-Type 请指定为:application/x-www-form-urlencoded
字符编码:统一采用 UTF-8 编码格式
query 长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内(汉字约为输入参数 2000 个)

代码

using System;
using System.Text;
using System.Net;
using System.IO;
using System.Security.Cryptography;
using System.Web;

namespace TransAPICSharpDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 原文
            string q = "apple";
            // 源语言
            string from = "en";
            // 目标语言
            string to = "zh";
            // 改成您的APP ID
            string appId = "2015063000000001";
            Random rd = new Random();
            string salt = rd.Next(100000).ToString();
            // 改成您的密钥
            string secretKey = "12345678";
            string sign = EncryptString(appId + q + salt + secretKey);
            string url = "http://api.fanyi.baidu.com/api/trans/vip/translate?";
            url += "q=" + HttpUtility.UrlEncode(q);
            url += "&from=" + from;
            url += "&to=" + to;
            url += "&appid=" + appId;
            url += "&salt=" + salt;
            url += "&sign=" + sign;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            request.UserAgent = null;
            request.Timeout = 6000;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            Console.WriteLine(retString);
            Console.ReadLine();
        }
        // 计算MD5值
        public static string EncryptString(string str)
        {
            MD5 md5 = MD5.Create();
            // 将字符串转换成字节数组
            byte[] byteOld = Encoding.UTF8.GetBytes(str);
            // 调用加密方法
            byte[] byteNew = md5.ComputeHash(byteOld);
            // 将加密结果转换为字符串
            StringBuilder sb = new StringBuilder();
            foreach (byte b in byteNew)
            {
                // 将字节转换成16进制表示的字符串,
                sb.Append(b.ToString("x2"));
            }
            // 返回加密的字符串
            return sb.ToString();
        }
    }
}

在编写你的代码时,把以上示例代码中的 APP ID 和 密钥 更换成你注册开通百度翻译时得到的即可!


简介

升讯威在线客服与营销系统是一款客服软件,但更重要的是一款营销利器。

https://kf.shengxunwei.com/

  • 可以追踪正在访问网站或使用 APP 的所有访客,收集他们的浏览情况,使客服能够主动出击,施展话术,促进成单。
    访* 客端在 PC 支持所有新老浏览器。包括不支持 WebSocket 的 IE8 也能正常使用。
  • 移动端支持所有手机浏览器、APP、各大平台的公众号对接。
  • 支持访客信息互通,可传输访客标识、名称和其它任意信息到客服系统。
  • 具备一线专业技术水平,网络中断,拔掉网线,手机飞行模式,不丢消息。同类软件可以按视频方式对比测试。

希望能够打造: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。

钟意的话请给个赞支持一下吧,谢谢~

与升讯威在线客服系统的并发高性能数据处理技术:对接百度自动翻译相似的内容:

升讯威在线客服系统的并发高性能数据处理技术:对接百度自动翻译

我会通过一系列的文章详细分析升讯威在线客服系统的并发高性能技术是如何实现的,使用了哪些方案以及具体的做法。本文将详细的介绍百度翻译接口的注册、开通、对接全过程,以及 源代码 ,希望对你有用。

程序员想通过产品挣钱,首先你产品的目标客户得不差钱 (在线客服系统外传1)

在线客服系统我利用业余时间断断续续做了好几年,从一开始的追求完美,到后来的集中精力解决核心问题,从一开始的在每一个用户身上投入大量时间,到后来学会分辨什么是有价值客户,学到很多,成长很多。有许多工程技术上很好,很优秀的产品,甚至一定程度上得到了认可,却无法生存的产品,关门大吉。人们常常说是因为技术人...

解析QAnything启动命令过程

一.启动命令过程日志 启动命令bash ./run.sh -c local -i 0 -b hf -m Qwen-1_8B-Chat -t qwen-7b-chat。输入日志如下所示: root@MM-202203161213:/mnt/l/20230918_RAG方向/QAnything# bas

Web 网页性能及性能优化

Web 性能是 Web 开发的一个重要方面,侧重于网页加载速度以及对用户输入的响应速度 通过优化网站来改善性能,可以在为用户提供更好的体验 网页性能既广泛又非常深入 1. 为什么性能这么重要? 1. 性能关乎留住用户 性能对于任何在线业务都至关重要 与加载速度缓慢、让人感觉运行缓慢的网站相比,加载速...

Web 页面性能衡量指标-以用户为中心的效果指标

以用户为中心的性能指标是理解和改进站点体验的关键点 一、以用户为中心的性能指标 1. 指标是用来干啥的? 指标是用来衡量性能和用户体验的 2. 指标类型 感知加载速度:网页可以多快地加载网页中的所有视觉元素并将其渲染到屏幕上 加载响应速度:页面加载和执行组件快速响应用户互动所需的 JavaScrip...

JavaScript 中的 Range 和 Selection 对象

最近在做鼠标框选的需求,鼠标框选就需要用到 Range 和 Selection 对象。 Range 表示选择的区间范围,Selection 表示选择的文档内容。 Range 接口表示一个包含节点与文本节点的一部分的文档片段。 不仅仅可以用于鼠标框选,页面上任何元素、文本都可以创建 Range。 Se...

JS 监听用户页面访问&页面关闭并进行数据上报操作

用户在页面访问时发送数据到后台,页面关闭时也发送数据到后台。 第一次进入页面时触发页面访问 刷新当前页面时触发页面访问 新 tab 进入页面时触发页面访问 当前页面点击 nav 进入其他模块时,触发页面关闭&页面访问 关闭页面时触发页面关闭

JS 实现鼠标框选(页面选择)时返回对应的代码或文本内容

当用户进行鼠标框选选择了页面上的内容时,把选择的内容进行上报。 分为以下几点: 选择文案时 选择图片、svg、iframe、video、audio 等标签时 选择 input、select、textarea 等标签时 选择input、textarea 标签内容时 选择类似   字符时 键盘全选时 鼠...

ES 2024 新特性

ECMAScript 2024 新特性 ECMAScript 2024, the 15th edition, added facilities for resizing and transferring ArrayBuffers and SharedArrayBuffers; added a new

Blazor技术入门

曾写过点儿前后端分离的项目(Vue+.NET Core Web API)、WPF和WinForm。因为Blazor不支持小程序的原因(相对于uniapp),所以只是大概知道Blazor可以写Web、PC和移动端项目,最大的特点就是使用C#代替JS。本文算是通过几个默认例子入门Blazor技术吧。 一