Flutter IBM Watson Assistant集成插件ibm_watson_assistant的使用
Flutter IBM Watson Assistant 集成插件 ibm_watson_assistant
的使用
ibm_watson_assistant
是一个 Dart 包,用于简化与 IBM Watson Assistant v2 API 的集成。你可以通过以下链接查看完整的包信息和版本:
示例项目
要了解如何使用此插件,可以参考 示例项目。
示例代码
以下是使用 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
更多关于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),
],
),
),
),
);
}
}
在这个示例中,我们完成了以下步骤:
- 在
pubspec.yaml
中添加ibm_watson_assistant
依赖。 - 在
MyApp
类中,初始化IBM Watson Assistant客户端并创建一个新的会话。 - 使用
TextField
和ElevatedButton
组件构建一个简单的UI,允许用户输入消息并发送到Watson Assistant。 - 发送消息后,使用
setState
方法更新UI以显示Watson Assistant的响应。
请确保将YOUR_API_KEY
和YOUR_SERVICE_URL
替换为你自己的IBM Watson Assistant服务的API密钥和服务URL。这个示例应该能帮助你在Flutter应用中集成并使用IBM Watson Assistant。