Kaynağa Gözat

Merge branch 'fix/ios_ai_update' into 'develop'

ios更新语音助手

See merge request o2oa/o2oa!1465
楼国栋 5 yıl önce
ebeveyn
işleme
8af28fe553

+ 21 - 4
o2ios/O2Platform/App/VoiceAI-语音处理/Controller/OOVoiceAIController.swift

@@ -15,14 +15,13 @@ import O2OA_Auth_SDK
 class OOVoiceAIController: UIViewController {
     
     @IBOutlet weak var voiceView: OOVoiceView!
-    
+    @IBOutlet weak var tipsLabel: UILabel!
     @IBOutlet weak var showLabel: UILabel!
     
     
     var closeVC = false
     var animation = false
-//    var lastRecognizeTime = -1 // 没有识别出内容的时间  计算持续多久没识别内容出来了
-//    var beginRecognizeFirstTime = -1 //是否有开始识别出内容
+ 
     
     // 语音合成
     var synthersizer:AVSpeechSynthesizer!
@@ -100,6 +99,24 @@ class OOVoiceAIController: UIViewController {
         }
         self.bdmanager?.sendCommand(BDS_ASR_CMD_START)
         self.showLabel.text = "等待命令中....."
+        //根据当前状态 展现提示命令
+        if self.viewModel.getAIStatus() == .normal {
+            let taskCommand = AI_COMMAND_TASK.joined(separator: ",")
+            let outCommand = AI_COMMAND_STOP.joined(separator: ",")
+            self.tipsLabel.text = "可以使用如下命令:\(taskCommand) , \(outCommand)"
+        }else if self.viewModel.getAIStatus() == .working {
+            let ignoreCommand = AI_COMMAND_IGNORE.joined(separator: ",")
+            let aiCommand = AI_COMMAND_TASK_NEURAL.joined(separator: ",")
+            let outCommand = AI_COMMAND_STOP.joined(separator: ",")
+            if let task = self.viewModel.getCurrentDealTask() {
+                let routeList = task.routeNameList?.joined(separator: "或") ?? ""
+                self.tipsLabel.text = "可以使用如下命令:\(routeList) , \(ignoreCommand), \(aiCommand)"
+            }else {
+                self.tipsLabel.text = "可以使用如下命令:\(outCommand)"
+            }
+        }else {
+            self.tipsLabel.text = ""
+        }
         animation = true
         voiceView.startAnimation()
     }
@@ -109,6 +126,7 @@ class OOVoiceAIController: UIViewController {
         guard animation else {
             return
         }
+        self.tipsLabel.text = ""
         self.bdmanager?.sendCommand(BDS_ASR_CMD_STOP)
         animation = false
         voiceView.stopAnimation()
@@ -158,7 +176,6 @@ extension OOVoiceAIController: OOAIVoiceControllerDelegate {
             DispatchQueue.main.async {
                 self.startListen()
             }
-            
             break
         case .speak:
             DDLogInfo("开始说话。。。。。。。。。。。。。。")

+ 2 - 1
o2ios/O2Platform/App/VoiceAI-语音处理/Model/AIConstants.swift

@@ -11,5 +11,6 @@ import Foundation
 
 let AI_COMMAND_STOP = ["停止", "结束", "退出", "关闭", "退出工作", "结束工作"]
 let AI_COMMAND_IGNORE = ["跳过", "下一个", "继续下一个工作", "继续", "下一个工作", "不处理", "忽略"]
-let AI_COMMAND_TASK = ["待办", "工作", "我的待办", "我的工作", "查看我的工作", "查看我的待办", "查看一下我的待办", "查看一下我的工作", "查一下我的待办", "查一下我的工作", "处理工作", "处理待办"]
+let AI_COMMAND_TASK = ["待办", "工作", "我的待办", "我的工作", "查找工作", "查看我的工作", "查看我的待办", "查看一下我的待办", "查看一下我的工作", "查一下我的待办", "查一下我的工作", "处理工作", "处理待办"]
+let AI_COMMAND_TASK_TYPO = ["代办", "我的代办", "查看我的代办", "查看一下我的代办", "查一下我的代办", "处理代办"]
 let AI_COMMAND_TASK_NEURAL = ["你来处理", "你帮我处理", "你看着办", "自动处理"]

+ 33 - 5
o2ios/O2Platform/App/VoiceAI-语音处理/ViewModel/OOAIViewModel.swift

@@ -58,6 +58,13 @@ class OOAIViewModel: NSObject {
     private var taskList:[O2TodoTask] = []
     private var currentDealTaskIndex: Int = -1
     
+    /// 前台ui获取当前任务,展现路由命令给UI
+    func getCurrentDealTask() -> O2TodoTask? {
+        if self.currentDealTaskIndex >= 0 && self.taskList.count > 0 {
+            return self.taskList[self.currentDealTaskIndex]
+        }
+        return nil
+    }
     
     /// 当前路由
     private var commandRoute: AICommandRoute = .listen
@@ -65,7 +72,10 @@ class OOAIViewModel: NSObject {
     /// 当前状态
     private var aiStatus: AIStatus = .normal
     
-    
+    /// 前台ui获取当前状态
+    func getAIStatus() -> AIStatus {
+        return aiStatus
+    }
     
     /// ViewController里面实现处理前台页面UI相关的
     var aiVoiceControllerDelegate: OOAIVoiceControllerDelegate?
@@ -99,6 +109,7 @@ class OOAIViewModel: NSObject {
     }
     
     
+    
 }
 
 
@@ -294,16 +305,33 @@ extension OOAIViewModel {
     }
     
     private func isInStopCommand() -> Bool {
-        return AI_COMMAND_STOP.contains(self.command!)
+        guard let c = self.command else {
+            return false
+        }
+        return AI_COMMAND_STOP.contains(c)
     }
     private func isInTaskCommand() -> Bool {
-        return AI_COMMAND_TASK.contains(self.command!)
+        guard let c = self.command else {
+            return false
+        }
+        if AI_COMMAND_TASK.contains(c) {
+            return true
+        }else if AI_COMMAND_TASK_TYPO.contains(c) {
+            return true
+        }
+        return false
     }
     private func isInTaskNeuralCommand() -> Bool {
-        return AI_COMMAND_TASK_NEURAL.contains(self.command!)
+        guard let c = self.command else {
+            return false
+        }
+        return AI_COMMAND_TASK_NEURAL.contains(c)
     }
     private func isInIgnoreCommand() -> Bool {
-        return AI_COMMAND_IGNORE.contains(self.command!)
+        guard let c = self.command else {
+            return false
+        }
+        return AI_COMMAND_IGNORE.contains(c)
     }
     
 

+ 16 - 5
o2ios/O2Platform/App/VoiceAI-语音处理/ai.storyboard

@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="K6q-wn-zkE">
-    <device id="retina4_7" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="K6q-wn-zkE">
+    <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -21,6 +19,15 @@
                             <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="pic_beijing_yy" translatesAutoresizingMaskIntoConstraints="NO" id="Lwz-K6-aNp">
                                 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                             </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NaM-t8-V6z">
+                                <rect key="frame" x="247" y="12" width="120" height="219.5"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="120" id="haf-aV-oec"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <nil key="highlightedColor"/>
+                            </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vQy-Qp-OiV" customClass="OOVoiceView" customModule="O2Platform" customModuleProvider="target">
                                 <rect key="frame" x="97.5" y="243.5" width="180" height="180"/>
                                 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
@@ -48,11 +55,14 @@
                             <constraint firstItem="Lwz-K6-aNp" firstAttribute="top" secondItem="AfG-4P-0ss" secondAttribute="top" id="3Q1-iH-fO0"/>
                             <constraint firstAttribute="trailing" secondItem="Lwz-K6-aNp" secondAttribute="trailing" id="5XO-fv-sa3"/>
                             <constraint firstAttribute="bottom" secondItem="Lwz-K6-aNp" secondAttribute="bottom" id="9dR-4I-ibZ"/>
+                            <constraint firstItem="pna-1I-TG7" firstAttribute="trailing" secondItem="NaM-t8-V6z" secondAttribute="trailing" constant="8" id="E4s-hk-yjp"/>
                             <constraint firstItem="Lwz-K6-aNp" firstAttribute="leading" secondItem="AfG-4P-0ss" secondAttribute="leading" id="OtJ-eG-O4W"/>
+                            <constraint firstItem="NaM-t8-V6z" firstAttribute="top" secondItem="pna-1I-TG7" secondAttribute="top" constant="12" id="RFH-XB-Ncx"/>
                             <constraint firstItem="jKq-17-odX" firstAttribute="centerX" secondItem="AfG-4P-0ss" secondAttribute="centerX" id="UyY-7P-FiR"/>
                             <constraint firstItem="pna-1I-TG7" firstAttribute="trailing" secondItem="B2n-Wz-cLR" secondAttribute="trailing" constant="16" id="cfg-kO-pEV"/>
                             <constraint firstItem="B2n-Wz-cLR" firstAttribute="leading" secondItem="pna-1I-TG7" secondAttribute="leading" constant="16" id="dHp-kf-4Qv"/>
                             <constraint firstItem="jKq-17-odX" firstAttribute="centerY" secondItem="AfG-4P-0ss" secondAttribute="centerY" id="hBA-wv-n4p"/>
+                            <constraint firstItem="vQy-Qp-OiV" firstAttribute="top" secondItem="NaM-t8-V6z" secondAttribute="bottom" constant="12" id="iaJ-Hz-Y6H"/>
                             <constraint firstItem="pna-1I-TG7" firstAttribute="bottom" secondItem="B2n-Wz-cLR" secondAttribute="bottom" constant="24" id="pSG-9i-nsU"/>
                             <constraint firstItem="vQy-Qp-OiV" firstAttribute="centerY" secondItem="AfG-4P-0ss" secondAttribute="centerY" id="vO9-4q-Jvs"/>
                             <constraint firstItem="vQy-Qp-OiV" firstAttribute="centerX" secondItem="AfG-4P-0ss" secondAttribute="centerX" id="zZo-g2-HcH"/>
@@ -61,6 +71,7 @@
                     </view>
                     <connections>
                         <outlet property="showLabel" destination="B2n-Wz-cLR" id="teK-jc-4XL"/>
+                        <outlet property="tipsLabel" destination="NaM-t8-V6z" id="qgM-c3-YDR"/>
                         <outlet property="voiceView" destination="vQy-Qp-OiV" id="SeX-Rg-rdu"/>
                     </connections>
                 </viewController>