Integración de la barra de búsqueda de Amazon QuickSight Q para usuarios registrados - Amazon QuickSight

Integración de la barra de búsqueda de Amazon QuickSight Q para usuarios registrados

 Se aplica a: Enterprise Edition 
   Público al que va dirigido: desarrolladores de Amazon QuickSight 
nota

La barra de búsqueda QuickSight Q incrustada ofrece la clásica experiencia de preguntas y respuestas de QuickSight. QuickSight se integra con Amazon Q Business para lanzar una nueva experiencia de preguntas y respuestas generativas. Se recomienda a los desarrolladores usar la nueva experiencia de preguntas y respuestas generativas. Para obtener más información sobre la experiencia de preguntas y respuestas generativas incrustada, consulte Incrustación de Amazon Q en la experiencia de preguntas y respuestas generativas de QuickSight.

En las secciones siguientes encontrará información detallada sobre cómo configurar una barra de búsqueda integrada de Amazon QuickSight Q para usuarios registrados de QuickSight.

Paso 1: configuración de permisos

nota

La barra de búsqueda QuickSight Q incrustada ofrece la clásica experiencia de preguntas y respuestas de QuickSight. QuickSight se integra con Amazon Q Business para lanzar una nueva experiencia de preguntas y respuestas generativas. Se recomienda a los desarrolladores usar la nueva experiencia de preguntas y respuestas generativas. Para obtener más información sobre la experiencia de preguntas y respuestas generativas incrustada, consulte Incrustación de Amazon Q en la experiencia de preguntas y respuestas generativas de QuickSight.

En la siguiente sección, puede encontrar información sobre cómo configurar los permisos de la aplicación de backend o del servidor web para integrar la barra de búsqueda de Q. Esta tarea requiere acceso administrativo a AWS Identity and Access Management (IAM).

Cada usuario que obtenga acceso a un panel asume un rol que le proporcione acceso a Amazon QuickSight y permisos para el panel. Para ello, cree un rol de IAM en su Cuenta de AWS. Asocie una política de IAM al rol para proporcionar permisos a cualquier usuario que lo asuma. El rol de IAM debe proporcionar permisos para recuperar las URL integradas para un grupo de usuarios específico.

Con la ayuda del carácter comodín *, puede conceder los permisos necesarios para generar una URL para todos los usuarios de un espacio de nombres específico. También puede conceder permisos para generar una URL para un subconjunto de usuarios en espacios de nombres específicos. Para ello, añada quicksight:GenerateEmbedUrlForRegisteredUser.

Puede crear una condición en su política de IAM que limite los dominios que los desarrolladores pueden incluir en el parámetro AllowedDomains de una operación de la API GenerateEmbedUrlForRegisteredUser. El parámetro AllowedDomains es opcional. Ofrece a los desarrolladores la opción de anular los dominios estáticos que están configurados en el menú Administrar QuickSight y, en su lugar, enumerar hasta tres dominios o subdominios que pueden acceder a una URL generada. A continuación, esta URL se integra en el sitio web del desarrollador. Solo los dominios que aparecen en el parámetro pueden acceder a la barra de búsqueda de Q. Sin esta condición, los desarrolladores pueden incluir cualquier dominio de Internet en el parámetro AllowedDomains.

Para limitar los dominios que los desarrolladores pueden usar con este parámetro, añada una condición AllowedEmbeddingDomains a su política de IAM. Para obtener más información sobre el parámetro AllowedDomains, consulte GenerateEmbedUrlForRegisteredUser en la referencia de la API de Amazon QuickSight.

La siguiente política de ejemplo ofrece estos permisos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "quicksight:GenerateEmbedUrlForRegisteredUser" ], "Resource": "arn:partition:quicksight:region:accountId:user/namespace/userName", "Condition": { "ForAllValues:StringEquals": { "quicksight:AllowedEmbeddingDomains": [ "https://my.static.domain1.com", "https://*.my.static.domain2.com" ] } } } ] }

Además, si va a crear usuarios primerizos que vayan a ser lectores de Amazon QuickSight, asegúrese de añadir el permiso quicksight:RegisterUser en la política.

El siguiente ejemplo de política proporciona permiso para recuperar una URL integrada para los usuarios sin experiencia que vayan a ser lectores de QuickSight.

{ "Version": "2012-10-17", "Statement": [ { "Action": "quicksight:RegisterUser", "Resource": "*", "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "quicksight:GenerateEmbedUrlForRegisteredUser" ], "Resource": [ "arn:partition:quicksight:region:accountId:user/namespace/userName" ], "Condition": { "ForAllValues:StringEquals": { "quicksight:AllowedEmbeddingDomains": [ "https://my.static.domain1.com", "https://*.my.static.domain2.com" ] } } } ] }

Finalmente, la identidad de IAM de su aplicación debe tener asociada una política de confianza para permitir el acceso al rol que acaba de crear. Esto significa que, cuando un usuario accede a su aplicación, esta puede asumir el rol en nombre del usuario e incluir al usuario en QuickSight.

En el siguiente ejemplo, se muestra una muestra de política de confianza.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLambdaFunctionsToAssumeThisRole", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "AllowEC2InstancesToAssumeThisRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Para obtener más información sobre las políticas de confianza para la autenticación de OpenID Connect o lenguaje de marcado para confirmaciones de seguridad (SAML), consulte las siguientes secciones de la Guía de usuario de IAM:

Paso 2: generación de la URL con el código de autenticación adjunto

nota

La barra de búsqueda QuickSight Q incrustada ofrece la clásica experiencia de preguntas y respuestas de QuickSight. QuickSight se integra con Amazon Q Business para lanzar una nueva experiencia de preguntas y respuestas generativas. Se recomienda a los desarrolladores usar la nueva experiencia de preguntas y respuestas generativas. Para obtener más información sobre la experiencia de preguntas y respuestas generativas incrustada, consulte Incrustación de Amazon Q en la experiencia de preguntas y respuestas generativas de QuickSight.

En la siguiente sección, encontrará cómo autenticar a su usuario y obtener la URL del tema de Q integrable en su servidor de aplicaciones. Si tiene previsto integrar la barra de Q para los tipos de identidad de IAM o Amazon QuickSight, comparta el tema de Q con los usuarios.

Cuando un usuario accede a su aplicación, esta asume el rol de IAM en nombre del usuario. A continuación, la aplicación añade el usuario a QuickSight, si dicho usuario aún no existe. A continuación, transfiere un identificador como ID de sesión de rol único.

Al realizar los pasos descritos, se garantiza que cada espectador del tema de Q se aprovisione de forma única en QuickSight. También aplica la configuración por usuario, como la seguridad de nivel de fila y los valores predeterminados dinámicos de los parámetros.

Los siguientes ejemplos realizan la autenticación de IAM en nombre del usuario. Este código se ejecuta en el servidor de aplicaciones.

import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.quicksight.AmazonQuickSight; import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult; import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration; import com.amazonaws.services.quicksight.model.RegisteredUserQSearchBarEmbeddingConfiguration; /** * Class to call QuickSight AWS SDK to get url for embedding the Q search bar. */ public class RegisteredUserQSearchBarEmbeddingConfiguration { private final AmazonQuickSight quickSightClient; public RegisteredUserQSearchBarEmbeddingConfiguration() { this.quickSightClient = AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(new AWSCredentialsProvider() { @Override public AWSCredentials getCredentials() { // provide actual IAM access key and secret key here return new BasicAWSCredentials("access-key", "secret-key"); } @Override public void refresh() { } } ) .build(); } public String getQuicksightEmbedUrl( final String accountId, // AWS Account ID final String topicId, // Topic ID to embed final List<String> allowedDomains, // Runtime allowed domain for embedding final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find how to get user arn for a QuickSight user. ) throws Exception { final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration() .withQSearchBar(new RegisteredUserQSearchBarEmbeddingConfiguration().withInitialTopicId(topicId)); final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest(); generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId); generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn); generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains); generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(QSearchBar); final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest); return generateEmbedUrlForRegisteredUserResult.getEmbedUrl(); } }
global.fetch = require('node-fetch'); const AWS = require('aws-sdk'); function generateEmbedUrlForRegisteredUser( accountId, topicId, // Topic ID to embed openIdToken, // Cognito-based token userArn, // registered user arn roleArn, // IAM user role to use for embedding sessionName, // Session name for the roleArn assume role allowedDomains, // Runtime allowed domain for embedding getEmbedUrlCallback, // GetEmbedUrl success callback method errorCallback // GetEmbedUrl error callback method ) { const stsClient = new AWS.STS(); let stsParams = { RoleSessionName: sessionName, WebIdentityToken: openIdToken, RoleArn: roleArn } stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) { if (err) { console.log('Error assuming role'); console.log(err, err.stack); errorCallback(err); } else { const getQSearchBarParams = { "AwsAccountId": accountId, "ExperienceConfiguration": { "QSearchBar": { "InitialTopicId": topicId } }, "UserArn": userArn, "AllowedDomains": allowedDomains, "SessionLifetimeInMinutes": 600 }; const quicksightGetQSearchBar = new AWS.QuickSight({ region: process.env.AWS_REGION, credentials: { accessKeyId: data.Credentials.AccessKeyId, secretAccessKey: data.Credentials.SecretAccessKey, sessionToken: data.Credentials.SessionToken, expiration: data.Credentials.Expiration } }); quicksightGetQSearchBar.generateEmbedUrlForRegisteredUser(getQSearchBarParams, function(err, data) { if (err) { console.log(err, err.stack); errorCallback(err); } else { const result = { "statusCode": 200, "headers": { "Access-Control-Allow-Origin": "*", // Use your website domain to secure access to GetEmbedUrl API "Access-Control-Allow-Headers": "Content-Type" }, "body": JSON.stringify(data), "isBase64Encoded": false } getEmbedUrlCallback(result); } }); } }); }
import json import boto3 from botocore.exceptions import ClientError sts = boto3.client('sts') # Function to generate embedded URL # accountId: AWS account ID # topicId: Topic ID to embed # userArn: arn of registered user # allowedDomains: Runtime allowed domain for embedding # roleArn: IAM user role to use for embedding # sessionName: session name for the roleArn assume role def getEmbeddingURL(accountId, topicId, userArn, allowedDomains, roleArn, sessionName): try: assumedRole = sts.assume_role( RoleArn = roleArn, RoleSessionName = sessionName, ) except ClientError as e: return "Error assuming role: " + str(e) else: assumedRoleSession = boto3.Session( aws_access_key_id = assumedRole['Credentials']['AccessKeyId'], aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'], aws_session_token = assumedRole['Credentials']['SessionToken'], ) try: quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2') response = quicksightClient.generate_embed_url_for_registered_user( AwsAccountId=accountId, ExperienceConfiguration = { "QSearchBar": { "InitialTopicId": topicId } }, UserArn = userArn, AllowedDomains = allowedDomains, SessionLifetimeInMinutes = 600 ) return { 'statusCode': 200, 'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"}, 'body': json.dumps(response), 'isBase64Encoded': bool('false') } except ClientError as e: return "Error generating embedding url: " + str(e)

En el siguiente ejemplo, se muestra el código JavaScript (Node.js) que puede usar en el servidor de aplicaciones para generar la URL del panel integrado. Puede utilizar esta URL en su sitio web o aplicación para mostrar el panel.

const AWS = require('aws-sdk'); const https = require('https'); var quicksightClient = new AWS.Service({ apiConfig: require('./quicksight-2018-04-01.min.json'), region: 'us-east-1', }); quicksightClient.generateEmbedUrlForRegisteredUser({ 'AwsAccountId': '111122223333', 'ExperienceConfiguration': { 'QSearchBar': { 'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f' } }, 'UserArn': 'REGISTERED_USER_ARN', 'AllowedDomains': allowedDomains, 'SessionLifetimeInMinutes': 100 }, function(err, data) { console.log('Errors: '); console.log(err); console.log('Response: '); console.log(data); });
//The URL returned is over 900 characters. For this example, we've shortened the string for //readability and added ellipsis to indicate that it's incomplete. { Status: 200, EmbedUrl: "https://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...", RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' }

En el siguiente ejemplo, se muestra el código .NET/C# que puede usar en el servidor de aplicaciones para generar la URL de la sesión de la barra de búsqueda de Q. Puede utilizar esta URL en su sitio web o aplicación para mostrar la barra de búsqueda de Q.

using System; using Amazon.QuickSight; using Amazon.QuickSight.Model; namespace GenerateDashboardEmbedUrlForRegisteredUser { class Program { static void Main(string[] args) { var quicksightClient = new AmazonQuickSightClient( AccessKey, SecretAccessKey, SessionToken, Amazon.RegionEndpoint.USEast1); try { RegisteredUserQSearchBarEmbeddingConfiguration registeredUserQSearchBarEmbeddingConfiguration = new RegisteredUserQSearchBarEmbeddingConfiguration { InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f" }; RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration { QSearchBar = registeredUserQSearchBarEmbeddingConfiguration }; Console.WriteLine( quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest { AwsAccountId = "111122223333", ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration, UserArn = "REGISTERED_USER_ARN", AllowedDomains = allowedDomains, SessionLifetimeInMinutes = 100 }).Result.EmbedUrl ); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }

Para asumir el rol, elija una de las siguientes operaciones de la API de AWS Security Token Service (AWS STS):

  • AssumeRole: utilice esta operación cuando use una identidad de IAM para asumir el rol.

  • AssumeRoleWithWebIdentity: utilice esta operación cuando utilice un proveedor de identidad web para autenticar al usuario.

  • AssumeRoleWithSaml: utilice esta operación cuando utilice SAML para autenticar a los usuarios.

En el siguiente ejemplo, se muestra el comando de la CLI para definir el rol de IAM. El rol debe tener los permisos de quicksight:GenerateEmbedUrlForRegisteredUser habilitados. Si adopta un enfoque “justo a tiempo” para añadir usuarios cuando utilizan un tema en la barra de búsqueda de Q, el rol también necesita permisos habilitados para quicksight:RegisterUser.

aws sts assume-role \ --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \ --role-session-name john.doe@example.com

La operación assume-role devuelve tres parámetros de salida: la clave de acceso, la clave secreta y el token de sesión.

nota

Si se produce un error ExpiredToken al llamar a la operación AssumeRole, probablemente se debe a que el SESSION TOKEN anterior aún se encuentra en las variables de entorno. Para retirarlo, establezca las variables siguientes:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

En el siguiente ejemplo, se muestra cómo definir estos tres parámetros en la CLI. En un ordenador con Microsoft Windows, utilice set en lugar de export.

export AWS_ACCESS_KEY_ID = "access_key_from_assume_role" export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role" export AWS_SESSION_TOKEN = "session_token_from_assume_role"

Al ejecutar estos comandos, se define el ID de sesión del rol del usuario que visita su sitio web como embedding_quicksight_q_search_bar_role/john.doe@example.com. El ID de sesión del rol está compuesto por el nombre del rol de role-arn y el valor de role-session-name. Al utilizar el ID de sesión del rol único para cada usuario, se garantiza que se definan los permisos correspondientes para cada usuario. También evitará la limitación del acceso de los usuarios. La limitación es una característica de seguridad que impide al mismo usuario al acceso a QuickSight desde varias ubicaciones.

El ID de sesión del rol también se convierte en el nombre de usuario en QuickSight. Puede utilizar este patrón para aprovisionar a sus usuarios en QuickSight con antelación, o para aprovisionarlos la primera vez que accedan a la barra de búsqueda de Q.

En el siguiente ejemplo, se muestra el comando de la CLI que puede utilizar para incluir a un usuario. Para obtener más información sobre RegisterUser, DescribeUser y otras operaciones de la API de QuickSight, consulte la referencia de la API de QuickSight.

aws quicksight register-user \ --aws-account-id 111122223333 \ --namespace default \ --identity-type IAM \ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \ --user-role READER \ --user-name jhnd \ --session-name "john.doe@example.com" \ --email john.doe@example.com \ --region us-east-1 \ --custom-permissions-name TeamA1

Si el usuario se ha autenticado a través de Microsoft AD, no es necesario utilizar RegisterUser para configurarlo. En cambio, deberán suscribirse automáticamente la primera vez que obtengan acceso a QuickSight. En el caso de los usuarios de Microsoft AD, puede utilizar DescribeUser para obtener el Nombre de recurso de Amazon (ARN) del usuario.

La primera vez que un usuario accede a QuickSight, también puede añadirlo al grupo con el que se comparte el panel. En el siguiente ejemplo, se muestra el comando de la CLI para añadir un usuario a un grupo.

aws quicksight create-group-membership \ --aws-account-id=111122223333 \ --namespace=default \ --group-name=financeusers \ --member-name="embedding_quicksight_q_search_bar_role/john.doe@example.com"

Ahora cuenta con un usuario de su aplicación que también es usuario de QuickSight y que tiene acceso al panel.

Por último, para obtener una URL firmada para el panel, llame a generate-embed-url-for-registered-user desde el servidor de aplicaciones. Esta operación devuelve la URL del panel integrable. En el siguiente ejemplo, se muestra cómo generar la dirección URL de un panel integrado mediante una llamada del lado del servidor para usuarios autenticados a través de AWS Managed Microsoft AD o el inicio de sesión único (IAM Identity Center).

aws quicksight generate-embed-url-for-registered-user \ --aws-account-id 111122223333 \ --session-lifetime-in-minutes 600 \ --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_q_search_bar_role/embeddingsession --allowed-domains '["domain1","domain2"]' \ --experience-configuration QSearchBar={InitialTopicId=U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f}

Para obtener más información sobre cómo usar esta operación, consulte GenerateEmbedUrlForRegisteredUser. Puede utilizar esta y otras operaciones de la API en su propio código.

Paso 3: integración de la URL de la barra de búsqueda de Q

nota

La barra de búsqueda QuickSight Q incrustada ofrece la clásica experiencia de preguntas y respuestas de QuickSight. QuickSight se integra con Amazon Q Business para lanzar una nueva experiencia de preguntas y respuestas generativas. Se recomienda a los desarrolladores usar la nueva experiencia de preguntas y respuestas generativas. Para obtener más información sobre la experiencia de preguntas y respuestas generativas incrustada, consulte Incrustación de Amazon Q en la experiencia de preguntas y respuestas generativas de QuickSight.

En la siguiente sección, puede encontrar cómo integrar la URL de la barra de búsqueda Q del paso 3 en su sitio web o página de la aplicación. Esto se hace con el SDK de integración de Amazon QuickSight (JavaScript). Con el SDK, puede hacer lo siguiente:

  • Colocar la barra de búsqueda de Q en una página HTML.

  • Pasar los parámetros a la barra de búsqueda de Q.

  • Resolver los estados de error con mensajes que se personalizan en su aplicación.

Llame a la operación de la API GenerateEmbedUrlForRegisteredUser para generar la dirección URL que puede integrar en la aplicación. Esta URL es válida durante 5 minutos, y la sesión resultante es válida hasta 10 horas. La operación de la API proporciona la URL con un valor auth_code que permite una sesión con inicio único.

El siguiente es un ejemplo de respuesta de generate-embed-url-for-registered-user.

//The URL returned is over 900 characters. For this example, we've shortened the string for //readability and added ellipsis to indicate that it's incomplete. { "Status": "200", "EmbedUrl": "https://quicksightdomain/embedding/12345/q/search...", "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713" }

Integre la barra de búsqueda de Q en la página web con el SDK de integración de QuickSight o agregando la URL a un iframe. Si configura un número fijo para la altura y anchura (en píxeles), QuickSight los usará y el elemento visual no cambiará cuando cambie el tamaño de la ventana. Si configura una altura y anchura relativas en porcentaje, QuickSight ofrece un diseño adaptable que se modifica cuando cambia el tamaño de la ventana.

Para ello, asegúrese de que el dominio que alojará la barra de búsqueda de Q integrada esté en la lista de permitidos, la lista de dominios aprobados de su suscripción a QuickSight. Este requisito protege los datos impidiendo que dominios no aprobados alojen paneles integrados. Para obtener más información acerca de añadir dominios a la barra de búsqueda de Q, consulte Administración de dominios e integración.

Al utilizar el SDK de integración de QuickSight, la barra de búsqueda de Q de la página cambia de tamaño de forma dinámica en función del estado. Al usar el SDK de integración de QuickSight también puede controlar los parámetros de la barra de búsqueda de Q y recibir devoluciones de llamada en situaciones de finalización de carga de páginas y errores.

En el siguiente ejemplo, se muestra cómo utilizar la URL generada. Este código se genera en el servidor de aplicaciones.

<!DOCTYPE html> <html> <head> <title>Q Search Bar Embedding Example</title> <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script> <script type="text/javascript"> const embedQSearchBar = async() => { const { createEmbeddingContext, } = QuickSightEmbedding; const embeddingContext = await createEmbeddingContext({ onChange: (changeEvent, metadata) => { console.log('Context received a change', changeEvent, metadata); }, }); const frameOptions = { url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API container: '#experience-container', height: "700px", width: "1000px", onChange: (changeEvent, metadata) => { switch (changeEvent.eventName) { case 'FRAME_MOUNTED': { console.log("Do something when the experience frame is mounted."); break; } case 'FRAME_LOADED': { console.log("Do something when the experience frame is loaded."); break; } } }, }; const contentOptions = { hideTopicName: false, theme: '<YOUR_THEME_ID>', allowTopicSelection: true, onMessage: async (messageEvent, experienceMetadata) => { switch (messageEvent.eventName) { case 'Q_SEARCH_OPENED': { console.log("Do something when Q Search content expanded"); break; } case 'Q_SEARCH_CLOSED': { console.log("Do something when Q Search content collapsed"); break; } case 'Q_SEARCH_SIZE_CHANGED': { console.log("Do something when Q Search size changed"); break; } case 'CONTENT_LOADED': { console.log("Do something when the Q Search is loaded."); break; } case 'ERROR_OCCURRED': { console.log("Do something when the Q Search fails loading."); break; } } } }; const embeddedDashboardExperience = await embeddingContext.embedQSearchBar(frameOptions, contentOptions); }; </script> </head> <body onload="embedQSearchBar()"> <div id="experience-container"></div> </body> </html>
<!DOCTYPE html> <html> <head> <title>QuickSight Q Search Bar Embedding</title> <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.18.0/dist/quicksight-embedding-js-sdk.min.js"></script> <script type="text/javascript"> var session function onError(payload) { console.log("Do something when the session fails loading"); } function onOpen() { console.log("Do something when the Q search bar opens"); } function onClose() { console.log("Do something when the Q search bar closes"); } function embedQSearchBar() { var containerDiv = document.getElementById("embeddingContainer"); var options = { url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", // replace this dummy url with the one generated via embedding API container: containerDiv, width: "1000px", locale: "en-US", qSearchBarOptions: { expandCallback: onOpen, collapseCallback: onClose, iconDisabled: false, topicNameDisabled: false, themeId: 'bdb844d0-0fe9-4d9d-b520-0fe602d93639', allowTopicSelection: true } }; session = QuickSightEmbedding.embedQSearchBar(options); session.on("error", onError); } function onCountryChange(obj) { session.setParameters({country: obj.value}); } </script> </head> <body onload="embedQSearchBar()"> <div id="embeddingContainer"></div> </body> </html>

Para que este ejemplo funcione, asegúrese de utilizar el SDK de integración de Amazon QuickSight para cargar el panel integrado en su sitio web mediante JavaScript. Para obtener su copia, siga uno de estos pasos:

Funcionalidades opcionales de integración en la barra de búsqueda de Amazon QuickSight Q

nota

La barra de búsqueda QuickSight Q incrustada ofrece la clásica experiencia de preguntas y respuestas de QuickSight. QuickSight se integra con Amazon Q Business para lanzar una nueva experiencia de preguntas y respuestas generativas. Se recomienda a los desarrolladores usar la nueva experiencia de preguntas y respuestas generativas. Para obtener más información sobre la experiencia de preguntas y respuestas generativas incrustada, consulte Incrustación de Amazon Q en la experiencia de preguntas y respuestas generativas de QuickSight.

Las siguientes funcionalidades opcionales están disponibles para la barra de búsqueda de Q integrada mediante el SDK de integración.

Invocación de las acciones de la barra de búsqueda de Q

Las siguientes opciones solo son compatibles con la integración de la barra de búsqueda de Q.

  • Establecer una pregunta en la barra de búsqueda de Q: esta característica envía una pregunta a la barra de búsqueda de Q e inmediatamente la consulta. También abre automáticamente la ventana emergente de Q.

    qBar.setQBarQuestion('show me monthly revenue');
  • Cerrar la ventana emergente de Q: esta característica cierra la ventana emergente de Q y devuelve el iframe al tamaño original de la barra de búsqueda de Q.

    qBar.closeQPopover();

Para obtener más información, consulte el SDK de integración de QuickSight.