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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
|
// Code generated by smithy-go-codegen DO NOT EDIT.
package qbusiness
import (
"context"
"fmt"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/service/qbusiness/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Starts or continues a non-streaming Amazon Q Business conversation.
func (c *Client) ChatSync(ctx context.Context, params *ChatSyncInput, optFns ...func(*Options)) (*ChatSyncOutput, error) {
if params == nil {
params = &ChatSyncInput{}
}
result, metadata, err := c.invokeOperation(ctx, "ChatSync", params, optFns, c.addOperationChatSyncMiddlewares)
if err != nil {
return nil, err
}
out := result.(*ChatSyncOutput)
out.ResultMetadata = metadata
return out, nil
}
type ChatSyncInput struct {
// The identifier of the Amazon Q Business application linked to the Amazon Q
// Business conversation.
//
// This member is required.
ApplicationId *string
// A request from an end user to perform an Amazon Q Business plugin action.
ActionExecution *types.ActionExecution
// A list of files uploaded directly during chat. You can upload a maximum of 5
// files of upto 10 MB each.
Attachments []types.AttachmentInput
// Enables filtering of Amazon Q Business web experience responses based on
// document attributes or metadata fields.
AttributeFilter *types.AttributeFilter
// An authentication verification event response by a third party authentication
// server to Amazon Q Business.
AuthChallengeResponse *types.AuthChallengeResponse
// The chat modes available to an Amazon Q Business end user.
//
// - RETRIEVAL_MODE - The default chat mode for an Amazon Q Business application.
// When this mode is enabled, Amazon Q Business generates responses only from data
// sources connected to an Amazon Q Business application.
//
// - CREATOR_MODE - By selecting this mode, users can choose to generate
// responses only from the LLM knowledge, without consulting connected data
// sources, for a chat request.
//
// - PLUGIN_MODE - By selecting this mode, users can choose to use plugins in
// chat.
//
// For more information, see [Admin controls and guardrails], [Plugins], and [Conversation settings].
//
// [Conversation settings]: https://docs.aws.amazon.com/amazonq/latest/business-use-dg/using-web-experience.html#chat-source-scope
// [Admin controls and guardrails]: https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/guardrails.html
// [Plugins]: https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/plugins.html
ChatMode types.ChatMode
// The chat mode configuration for an Amazon Q Business application.
ChatModeConfiguration types.ChatModeConfiguration
// A token that you provide to identify a chat request.
ClientToken *string
// The identifier of the Amazon Q Business conversation.
ConversationId *string
// The identifier of the previous system message in a conversation.
ParentMessageId *string
// The groups that a user associated with the chat input belongs to.
UserGroups []string
// The identifier of the user attached to the chat input.
UserId *string
// A end user message in a conversation.
UserMessage *string
noSmithyDocumentSerde
}
type ChatSyncOutput struct {
// A request from Amazon Q Business to the end user for information Amazon Q
// Business needs to successfully complete a requested plugin action.
ActionReview *types.ActionReview
// An authentication verification event activated by an end user request to use a
// custom plugin.
AuthChallengeRequest *types.AuthChallengeRequest
// The identifier of the Amazon Q Business conversation.
ConversationId *string
// A list of files which failed to upload during chat.
FailedAttachments []types.AttachmentOutput
// The source documents used to generate the conversation response.
SourceAttributions []*types.SourceAttribution
// An AI-generated message in a conversation.
SystemMessage *string
// The identifier of an Amazon Q Business AI generated message within the
// conversation.
SystemMessageId *string
// The identifier of an Amazon Q Business end user text input message within the
// conversation.
UserMessageId *string
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationChatSyncMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsRestjson1_serializeOpChatSync{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsRestjson1_deserializeOpChatSync{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "ChatSync"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = addClientRequestID(stack); err != nil {
return err
}
if err = addComputeContentLength(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = addComputePayloadSHA256(stack); err != nil {
return err
}
if err = addRetry(stack, options); err != nil {
return err
}
if err = addRawResponseToMetadata(stack); err != nil {
return err
}
if err = addRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack, options); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
return err
}
if err = addTimeOffsetBuild(stack, c); err != nil {
return err
}
if err = addUserAgentRetryMode(stack, options); err != nil {
return err
}
if err = addIdempotencyToken_opChatSyncMiddleware(stack, options); err != nil {
return err
}
if err = addOpChatSyncValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opChatSync(options.Region), middleware.Before); err != nil {
return err
}
if err = addRecursionDetection(stack); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
return nil
}
type idempotencyToken_initializeOpChatSync struct {
tokenProvider IdempotencyTokenProvider
}
func (*idempotencyToken_initializeOpChatSync) ID() string {
return "OperationIdempotencyTokenAutoFill"
}
func (m *idempotencyToken_initializeOpChatSync) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
if m.tokenProvider == nil {
return next.HandleInitialize(ctx, in)
}
input, ok := in.Parameters.(*ChatSyncInput)
if !ok {
return out, metadata, fmt.Errorf("expected middleware input to be of type *ChatSyncInput ")
}
if input.ClientToken == nil {
t, err := m.tokenProvider.GetIdempotencyToken()
if err != nil {
return out, metadata, err
}
input.ClientToken = &t
}
return next.HandleInitialize(ctx, in)
}
func addIdempotencyToken_opChatSyncMiddleware(stack *middleware.Stack, cfg Options) error {
return stack.Initialize.Add(&idempotencyToken_initializeOpChatSync{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before)
}
func newServiceMetadataMiddleware_opChatSync(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "ChatSync",
}
}
|