Flutter IBM Watson Assistant集成插件ibm_watson_assistant的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter IBM Watson Assistant 集成插件 ibm_watson_assistant 的使用

ibm_watson_assistant 是一个 Dart 包,用于简化与 IBM Watson Assistant v2 API 的集成。你可以通过以下链接查看完整的包信息和版本:

pub package

示例项目

要了解如何使用此插件,可以参考 示例项目

示例代码

以下是使用 ibm_watson_assistant 插件的一个完整示例代码。请注意,你需要在项目的根目录下创建一个 .env 文件,并添加必要的环境变量(如 ASSISTANT_ID, ASSISTANT_URL, API_KEY)。

import 'package:ibm_watson_assistant/ibm_watson_assistant.dart';
import 'package:dotenv/dotenv.dart';

void main() async {
  // 加载环境变量
  load();

  // 创建身份验证对象
  final auth = IbmWatsonAssistantAuth(
    assistantId: env['ASSISTANT_ID'],
    url: env['ASSISTANT_URL'],
    apikey: env['API_KEY'],
  );

  // 初始化 Watson Assistant 客户端
  final bot = IbmWatsonAssistant(auth);

  // 创建会话
  final sessionId = await bot.createSession();
  print('Session ID: $sessionId');

  // 发送输入并获取响应
  final botRes = await bot.sendInput('hello', sessionId: sessionId);
  print('Bot Response: ${botRes.output.generic.first.text}');
  print('Raw Bot Response: ${botRes.responseText}');

  // 发送无状态输入
  final statelessBotRes = await bot.sendInput('goodbye', returnContext: false);
  print(' Stateless Bot Response: ${statelessBotRes.output.generic.first.text}');
  print('Raw Stateless Bot Response: ${statelessBotRes.responseText}');
  print('System State: ${statelessBotRes.context.skills.mainSkill.systemState.state}');

  // 删除会话
  bot.deleteSession(sessionId);

  // 获取日志
  try {
    final logs = await bot.logs();
    print('Logs: $logs');
  } catch (e) {
    print('Logging endpoint only available for paid plans.\n$e');
  }
}

环境变量文件 (.env)

在你的项目根目录下创建一个 .env 文件,并添加以下内容:

ASSISTANT_ID=your-assistant-id
ASSISTANT_URL=https://api.us-south.assistant.watson.cloud.ibm.com
API_KEY=your-api-key

更多关于Flutter IBM Watson Assistant集成插件ibm_watson_assistant的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter IBM Watson Assistant集成插件ibm_watson_assistant的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中集成并使用IBM Watson Assistant插件ibm_watson_assistant的代码案例。这个案例将展示如何初始化IBM Watson Assistant服务、设置参数以及发送消息到助理并获取响应。

首先,确保你已经在Flutter项目中添加了ibm_watson_assistant依赖。在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  ibm_watson_assistant: ^x.y.z  # 替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,我们需要在你的Flutter应用中配置IBM Watson Assistant服务。你需要在IBM Cloud上创建一个Watson Assistant服务实例,并获取API密钥和服务URL。

下面是一个完整的Flutter应用示例,展示了如何使用ibm_watson_assistant插件:

import 'package:flutter/material.dart';
import 'package:ibm_watson_assistant/v2.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final String apiKey = 'YOUR_API_KEY'; // 替换为你的API密钥
  final String serviceUrl = 'YOUR_SERVICE_URL'; // 替换为你的服务URL
  AssistantV2? assistant;
  SessionResponse? session;
  String message = '';
  String responseText = '';

  @override
  void initState() {
    super.initState();
    initializeWatsonAssistant();
  }

  void initializeWatsonAssistant() async {
    // 初始化IBM Watson Assistant客户端
    assistant = AssistantV2(
      authenticator: IamAuthenticator(apiKey: apiKey),
    );

    await assistant!.setServiceUrl(serviceUrl);

    // 创建一个新的会话
    try {
      CreateSessionRequest createSessionRequest = CreateSessionRequest();
      session = await assistant!.createSession(createSessionRequest);
      print('Session created: ${session!.sessionId}');
    } catch (e) {
      print('Error creating session: $e');
    }
  }

  void sendMessageToAssistant() async {
    if (session != null && message.isNotEmpty) {
      // 发送消息到Watson Assistant
      MessageRequest messageRequest = MessageRequest(
        input: MessageInput(text: message),
      );

      try {
        MessageResponse messageResponse = await assistant!.message(
          session!.sessionId,
          messageRequest,
        );

        // 更新UI以显示响应
        setState(() {
          responseText = messageResponse.output.generic!.responseList![0].text;
        });
      } catch (e) {
        print('Error sending message: $e');
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter IBM Watson Assistant Integration'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              TextField(
                decoration: InputDecoration(labelText: 'Message'),
                onChanged: (value) {
                  setState(() {
                    message = value;
                  });
                },
              ),
              SizedBox(height: 16),
              ElevatedButton(
                onPressed: sendMessageToAssistant,
                child: Text('Send Message'),
              ),
              SizedBox(height: 16),
              Text(
                'Watson Assistant Response:',
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
              SizedBox(height: 8),
              Text(responseText),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们完成了以下步骤:

  1. pubspec.yaml中添加ibm_watson_assistant依赖。
  2. MyApp类中,初始化IBM Watson Assistant客户端并创建一个新的会话。
  3. 使用TextFieldElevatedButton组件构建一个简单的UI,允许用户输入消息并发送到Watson Assistant。
  4. 发送消息后,使用setState方法更新UI以显示Watson Assistant的响应。

请确保将YOUR_API_KEYYOUR_SERVICE_URL替换为你自己的IBM Watson Assistant服务的API密钥和服务URL。这个示例应该能帮助你在Flutter应用中集成并使用IBM Watson Assistant。

回到顶部