|
|
// subPage/chat/index.js
|
|
|
var plugin = requirePlugin("WechatSI")
|
|
|
let manager = plugin.getRecordRecognitionManager()
|
|
|
Page({
|
|
|
|
|
|
/**
|
|
|
* 页面的初始数据
|
|
|
*/
|
|
|
data: {
|
|
|
eventType:'input',// 底部事件类型 input 键盘输入,voice 语音输入
|
|
|
sendText:'',// 发送的输入框内容
|
|
|
voiceBtnText:'按住 说话',
|
|
|
screenHeight:'0',
|
|
|
list:[
|
|
|
{
|
|
|
id:-1,
|
|
|
type:'text',
|
|
|
isUp:false,
|
|
|
isDown:false,
|
|
|
loading:false,
|
|
|
},
|
|
|
],
|
|
|
/* 录音状态
|
|
|
* -1 未录音,
|
|
|
* 0 按下
|
|
|
* 1 长按事件
|
|
|
* 2 同意授权,
|
|
|
* 3 拒绝授权,
|
|
|
* 4 没有进行授权操作
|
|
|
* 5 开始录音
|
|
|
* 6 抬起并结束录音
|
|
|
* 7 超出操作范围,提示取消录音
|
|
|
* 8 录音异常
|
|
|
* 9 抬起
|
|
|
*/
|
|
|
voiceSpeed:-1,
|
|
|
},
|
|
|
/**
|
|
|
* 生命周期函数--监听页面显示
|
|
|
*/
|
|
|
onShow() {
|
|
|
const res = wx.getSystemInfoSync();
|
|
|
console.log('设备数据',res);
|
|
|
this.setData({
|
|
|
screenHeight: res.screenHeight + 'px',
|
|
|
});
|
|
|
},
|
|
|
handleEvent(e) {
|
|
|
let that = this;
|
|
|
that.animate();
|
|
|
that.setData({
|
|
|
eventType: e.currentTarget.dataset.type == 'input' ? 'voice' : 'input',
|
|
|
voiceSpeed:-1
|
|
|
});
|
|
|
if (that.data.eventType == 'voice') {
|
|
|
// 检查是否有录音权限
|
|
|
wx.getSetting({
|
|
|
success(res) {
|
|
|
if (!res.authSetting['scope.record']) {
|
|
|
that.setData({
|
|
|
voiceSpeed:4
|
|
|
});
|
|
|
wx.authorize({
|
|
|
scope: 'scope.record',
|
|
|
success() {
|
|
|
console.log('录音权限已授权');
|
|
|
// 继续执行其他逻辑
|
|
|
that.setData({
|
|
|
voiceSpeed:2
|
|
|
});
|
|
|
},
|
|
|
fail() {
|
|
|
console.log('录音权限未授权');
|
|
|
that.setData({
|
|
|
voiceSpeed:4
|
|
|
});
|
|
|
wx.showModal({
|
|
|
title: '提示',
|
|
|
content: '需要录音权限才能使用语音输入功能,请在设置中授权。',
|
|
|
confirmText: '去设置',
|
|
|
cancelText: '取消',
|
|
|
success(res) {
|
|
|
if (res.confirm) {
|
|
|
wx.openSetting({
|
|
|
success(res) {
|
|
|
console.log('用户打开设置', res.authSetting);
|
|
|
if (res.authSetting['scope.record']) {
|
|
|
console.log('用户已授权录音权限');
|
|
|
// 用户授权后可以继续执行其他逻辑
|
|
|
that.setData({
|
|
|
voiceSpeed:2
|
|
|
});
|
|
|
} else {
|
|
|
console.log('用户未授权录音权限');
|
|
|
// 用户未授权录音权限后的逻辑
|
|
|
that.setData({
|
|
|
voiceSpeed:3
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
} else if (res.cancel) {
|
|
|
console.log('用户取消授权');
|
|
|
// 用户取消授权后的逻辑
|
|
|
that.setData({
|
|
|
voiceSpeed:3
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
console.log('录音权限已授权');
|
|
|
// 继续执行其他逻辑
|
|
|
that.setData({
|
|
|
voiceSpeed:2
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
handleUp(e){
|
|
|
let that = this;
|
|
|
that.animate();
|
|
|
const list = [...that.data.list];
|
|
|
const index = e.currentTarget.dataset.index;
|
|
|
list[index].isUp = !list[index].isUp;
|
|
|
that.setData({
|
|
|
list: list
|
|
|
});
|
|
|
},
|
|
|
handleDown(e){
|
|
|
let that = this;
|
|
|
that.animate();
|
|
|
const list = [...that.data.list];
|
|
|
const index = e.currentTarget.dataset.index;
|
|
|
list[index].isDown = !list[index].isDown;
|
|
|
that.setData({
|
|
|
list: list
|
|
|
});
|
|
|
},
|
|
|
handleCopy(e){
|
|
|
let that = this;
|
|
|
that.animate();
|
|
|
const index = e.currentTarget.dataset.index;
|
|
|
let content = that.data.list[index].content; // 获取要复制的内容
|
|
|
if(index == 0){
|
|
|
content = "Hi,我是大鹏,你的智能工作助理。以后找工作不用跟老板谈了,直接来跟大鹏谈。来说说你的要求,我们开始吧…"
|
|
|
}
|
|
|
wx.setClipboardData({
|
|
|
data: content,
|
|
|
success: function (res) {
|
|
|
wx.showToast({
|
|
|
title: '复制成功',
|
|
|
icon: 'success',
|
|
|
duration: 2000
|
|
|
});
|
|
|
},
|
|
|
fail: function (res) {
|
|
|
wx.showToast({
|
|
|
title: '复制失败',
|
|
|
icon: 'none',
|
|
|
duration: 2000
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
handleShare(){
|
|
|
let that = this;
|
|
|
that.animate();
|
|
|
},
|
|
|
handleInput(e){
|
|
|
let that = this;
|
|
|
that.setData({
|
|
|
sendText:e.detail.value
|
|
|
});
|
|
|
},
|
|
|
animate($type='light') {
|
|
|
wx.vibrateShort({
|
|
|
type:$type
|
|
|
});
|
|
|
},
|
|
|
|
|
|
|
|
|
// 文本消息发送
|
|
|
handleSend(){
|
|
|
let that = this;
|
|
|
if(that.data.sendText == ''){
|
|
|
wx.showToast({
|
|
|
title: '请输入内容',
|
|
|
icon: 'none',
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
that.animate();
|
|
|
that.setData({
|
|
|
list:[
|
|
|
...that.data.list,
|
|
|
{
|
|
|
id:that.data.list.length,
|
|
|
type:'text',
|
|
|
isUp:false,
|
|
|
isDown:false,
|
|
|
content:that.data.sendText,
|
|
|
loading:false,
|
|
|
},
|
|
|
{
|
|
|
id:that.data.list.length + 1,
|
|
|
type:'html',
|
|
|
isUp:false,
|
|
|
isDown:false,
|
|
|
content:`【北京奔驰连接器日结工】<br /><br />🚻 男女 18-48, 18-48周岁, 男女不限, 要求26个英文字母, 纹身烟疤拍照确认, 黑户,明显纹身,临时身份证不予接收,两班倒,站班<br /><br />💰 员工250元/天,支付60天;60天以后员工220元/天;每月10号发薪。培训工资100元/天,员工 16 元/时以上部分含税6个点的,打卡不满七天无工资;60天以后员工缴纳社保`,
|
|
|
loading:true,
|
|
|
},
|
|
|
],
|
|
|
sendText:''
|
|
|
});
|
|
|
},
|
|
|
/**
|
|
|
* 语音消息发送
|
|
|
*/
|
|
|
handleTouchStart: function(event) {
|
|
|
console.log('手指按下事件触发');
|
|
|
let that = this;
|
|
|
that.setData({
|
|
|
voiceSpeed: 0 // 假设 0 表示按下
|
|
|
});
|
|
|
},
|
|
|
handleLongPress: function(event) {
|
|
|
let that = this;
|
|
|
console.log('长按事件触发');
|
|
|
that.setData({
|
|
|
voiceSpeed:1
|
|
|
});
|
|
|
manager.start({duration:30000, lang: "zh_CN"})
|
|
|
// 处理长按事件的逻辑
|
|
|
manager.onStart = function(res) {
|
|
|
that.setData({
|
|
|
voiceSpeed:5
|
|
|
});
|
|
|
console.log("成功开始录音识别", res)
|
|
|
}
|
|
|
},
|
|
|
handleTouchEnd: function(event) {
|
|
|
console.log('手指抬起事件触发',this.data.voiceSpeed);
|
|
|
let that = this;
|
|
|
if(that.data.voiceSpeed >= 1){
|
|
|
that.animate();
|
|
|
that.data.sendText = '模拟语音转文本';
|
|
|
that.setData({
|
|
|
list:[
|
|
|
...that.data.list,
|
|
|
{
|
|
|
id:that.data.list.length,
|
|
|
type:'text',
|
|
|
isUp:false,
|
|
|
isDown:false,
|
|
|
content:that.data.sendText,
|
|
|
loading:false,
|
|
|
},
|
|
|
{
|
|
|
id:that.data.list.length + 1,
|
|
|
type:'html',
|
|
|
isUp:false,
|
|
|
isDown:false,
|
|
|
content:`【北京奔驰连接器日结工】<br /><br />🚻 男女 18-48, 18-48周岁, 男女不限, 要求26个英文字母, 纹身烟疤拍照确认, 黑户,明显纹身,临时身份证不予接收,两班倒,站班<br /><br />💰 员工250元/天,支付60天;60天以后员工220元/天;每月10号发薪。培训工资100元/天,员工 16 元/时以上部分含税6个点的,打卡不满七天无工资;60天以后员工缴纳社保`,
|
|
|
loading:true,
|
|
|
},
|
|
|
],
|
|
|
sendText:''
|
|
|
});
|
|
|
}
|
|
|
that.setData({
|
|
|
voiceSpeed:9
|
|
|
});
|
|
|
// 处理手指抬起事件的逻辑
|
|
|
manager.stop();
|
|
|
manager.onStop = function(res) {
|
|
|
that.setData({
|
|
|
voiceSpeed:6
|
|
|
});
|
|
|
console.log("监听录音结束 ;临时路径record file path", res.tempFilePath)
|
|
|
console.log("监听录音结束 结果result", res.result)
|
|
|
}
|
|
|
// manager.onError = function(res) {
|
|
|
// that.setData({
|
|
|
// voiceSpeed:8
|
|
|
// });
|
|
|
// console.error("监听录音异常 error msg", res.msg)
|
|
|
// }
|
|
|
},
|
|
|
}) |