0

我尝试在 Lita 中实施一个小问卷作为样本:

您要为哪个系统打开呼叫?

SYS 缩写

你怎么了?

我忘记了我的密码

谢谢!您的电话已打开!

任何帮助我怎么能做到这一点?

所以,我试试这个:

module Lita
  module Handlers
    class Helpdesk < Handler
      on :shut_down_complete, :clear_context

      route(/^abrir chamado$/i, :abrir_chamado)
      route(/^.*$/i, :motivo)
      http.get '/info', :web

      def motivo(response)
        return unless context == 'abrir_chamado'
        response.reply('Thanks! Your call was opened!')
        clear_context
      end

      def abrir_chamado(response)
        redis.set(:context, :abrir_chamado)
        user = response.user
        response.reply(
          %(Hello #{user.name}, What is your problem?)
        )
      end

      def context
        @contetx ||= redis.get(:context)
      end

      def clear_context
        redis.del(:context)
      end

      Lita.register_handler(Helpdesk)
    end
  end
end

但是当我注册时:informar_motivo route,在通过之后:abrir_chamado route,也是匹配的:informar_motivo路线。

丽塔对话通量

但是我需要:

我:阿布里尔查马多

Lita:您好,Shell 用户,您有什么问题?

我:我忘记密码了

丽塔:谢谢!您的电话已打开!

4

1 回答 1

0

我找到了一个丑陋的解决方案,但有效:P

module Lita
  module Handlers
    class Helpdesk < Handler
      on :shut_down_complete, :clear_context
      on :unhandled_message, :motivo

      route(/^abrir chamado$/i, :abrir_chamado)

      http.get '/info', :web

      def motivo(payload)
        response = payload[:message]
        return unless context == 'abrir_chamado'
        response.reply('Thanks! Your call was opened!')
        clear_context
      end

      def abrir_chamado(response)
        redis.set(:context, :abrir_chamado)
        user = response.user
        response.reply(
          %(Hello #{user.name}, What is your problem?)
        )
      end

      def context
        @contetx ||= redis.get(:context)
      end

      def clear_context
        redis.del(:context)
      end

      Lita.register_handler(Helpdesk)
    end
  end
end

在此处输入图像描述

于 2017-04-07T14:24:02.453 回答