Overview

Namespaces

  • Baidu
    • Duer
      • Botsdk
        • Card
        • Directive
          • AppLauncher
          • AudioPlayer
          • WebBrowser
        • Plugins

Classes

  • Baidu\Duer\Botsdk\Bot
  • Baidu\Duer\Botsdk\Card\BaseCard
  • Baidu\Duer\Botsdk\Card\ImageCard
  • Baidu\Duer\Botsdk\Card\ListCard
  • Baidu\Duer\Botsdk\Card\ListCardItem
  • Baidu\Duer\Botsdk\Card\StandardCard
  • Baidu\Duer\Botsdk\Card\TextCard
  • Baidu\Duer\Botsdk\Certificate
  • Baidu\Duer\Botsdk\Directive\AppLauncher\LaunchApp
  • Baidu\Duer\Botsdk\Directive\AudioPlayer\Play
  • Baidu\Duer\Botsdk\Directive\AudioPlayer\Stop
  • Baidu\Duer\Botsdk\Directive\BaseDirective
  • Baidu\Duer\Botsdk\Directive\WebBrowser\LaunchBrowser
  • Baidu\Duer\Botsdk\Intercept
  • Baidu\Duer\Botsdk\Log
  • Baidu\Duer\Botsdk\Nlu
  • Baidu\Duer\Botsdk\Plugins\DuerSessionIntercept
  • Baidu\Duer\Botsdk\Request
  • Baidu\Duer\Botsdk\Response
  • Baidu\Duer\Botsdk\Session

Traits

  • Baidu\Duer\Botsdk\DataObject
  • Overview
  • Namespace
  • Class
 1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 
<?php
/**
 * Copyright (c) 2017 Baidu, Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * @desc 度秘多轮优先,异常退出逻辑
 * @author ******@baidu.com
 **/
namespace Baidu\Duer\Botsdk\Plugins;

use \Baidu\Duer\Botsdk\Card\TextCard;

class DuerSessionIntercept extends \Baidu\Duer\Botsdk\Intercept{

    /**
     * @param string $tip
     * @param integer $threshold
     * @return null
     **/
    public function __construct($tip="非常抱歉,不明白你说的意思,已经取消了本次服务", $threshold=2) {
        $this->tip = $tip;
        $this->threshold = $threshold;
    }

    /**
     * @desc 在处理回调之前,bot-sdk会先调用preprocess,
     *       如果preprocess返回不为null,终止事件路由,将preprocess的输出作为最终输出
     *
     * @param Bot $bot
     * @return mixed
     **/
    public function preprocess($bot){
        if(!$this->threshold) {
            return; 
        }

        //NLU尝试slot提取,异常次数
        $daException = $bot->getSlot('da_system_not_understand');
        //bot 自身slot检查,不合法次数
        $botException = $bot->getSlot('bot_not_understand');
        $count = ($daException?$daException:0) + ($botException?$botException:0);

        if($count >= $this->threshold) {
            $bot->clearSessionAttribute();
            $bot->endDialog();
            $card = new TextCard($this->tip);

            return [ 
                'card' => $card,
            ];
        }
    }
}
 
API documentation generated by ApiGen