Compartir a través de


Buscar contenido de archivo adjunto de artículo de conocimiento

Puede usar las notas adjuntas del artículo de conocimiento para incluir archivos descargables en artículos de Knowledge Base. También puede usar los archivos web para crear una página Preguntas más frecuentes con el contenido descargable.

Importante

Solo los archivos que se adjuntan a los artículos de conocimientos pueden ser buscados. Los archivos que se adjuntan a los archivos web no se pueden buscar.

Puede configurar el sitio de Power Pages para permitir que los usuarios busquen en el contenido de los datos adjuntos de artículos de Knowledge Base. Esto ayuda a los usuarios a encontrar la información que están buscando.

En artículos de Knowledge Base, se indexa cualquier adjunto con el prefijo definido.

Para indexar datos adjuntos de artículos de concomientos, debe crear las siguientes configuraciones del sitio y establecer su valor en Verdadero:

Configuración del sitio Descripción
Search/IndexNotesAttachments Indica si se debe indexar el contenido de los datos adjuntos en artículos de Knowledge Base. De forma predeterminada, se establece como Falso.
KnowledgeManagement/DisplayNotes Indica si mostrar los datos adjuntos de los artículos de Knowledge Base. De forma predeterminada, se establece como Falso.

Cuando busca un período, los resultados de la búsqueda también incluyen los datos adjuntos. Si el término de búsqueda coincide con los datos adjuntos de knowledgearticle, también se proporciona el vínculo al artículo correspondiente de Knowledge Base. Para ver los datos adjuntos descargables, seleccione Descargas en Tipo de registro en el panel izquierdo. Para modificar la etiqueta Descargas, edite el fragmento de código de contenido Search/Facet/Downloads. De manera predeterminada, el valor se establece como Descargas.

Nota

Búsqueda de Dataverse debe estar habilitado en su entorno para utilizar esta funcionalidad.

Buscar en los adjuntos del artículo de conocimientos

Si su sitio utiliza búsqueda de Lucene .NET, puede habilitar el sitio web para buscar a través de archivos adjuntos de artículos de conocimiento configurando la opción Sincronizar archivos adjuntos de artículos de conocimiento con el sitio como en el centro de administración de Dynamics 365 Customer Service o en la aplicación Centro de servicio al cliente. No necesita configurar esta opción si su sitio utiliza la búsqueda de Dataverse; podrá buscar en los archivos adjuntos de los artículos de conocimiento de forma predeterminada.

Esto permite que la búsqueda se realice en los archivos adjuntos de los artículos de conocimiento y hace que la información sea fácilmente accesible para los consumidores de conocimiento. Con esta nueva capacidad de archivos adjuntos, no necesitará usar los archivos adjuntos de notas para el sitio. Los archivos adjuntos del artículo de conocimiento se sincronizarán automáticamente con el archivo adjunto de notas. Más información: Actualizar archivos adjuntos de artículos de conocimientos para el portal

Actualizar configuraciones del sitio

Si ya tiene un sitio web antes de abril de 2018 y ha actualizado el sitio a la versión más reciente, debe usar las siguientes configuraciones para que tengan la misma experiencia de usuario que una nueva instalación.

Fragmentos de contenido

Para modificar la etiqueta que se muestra en los resultados de la búsqueda para descargas de anotaciones y archivos web, cree un fragmento de código del contenido Search/Facet/Downloads y, a continuación, establezca su valor según corresponda. El valor predeterminado es Descargas.

Plantillas web

La plantilla web Plantilla de búsqueda por facetas - Resultados se revisa para mostrar los archivos asociados a los artículos de Knowledge Base como los elementos principales del resultado de búsqueda con un vínculo de artículo relacionado. Debe actualizar la plantilla web Plantilla de búsqueda por facetas - Resultados para el siguiente origen:

{% assign openTag = '{{' %}
{% assign closingTag = '}}' %}
{%raw%}
  <script id="search-view-results" type="text/x-handlebars-template">
    {{#if items}}
      <div class="page-header">
        <h2>{%endraw%}{{openTag}} stringFormat "{{ resx.Search_Results_Format_String }}" firstResultNumber lastResultNumber itemCount {{closingTag}}{%raw%}
          <em class="querytext">{{{query}}}</em>
          {{#if isResetVisible}}
            <a class="btn btn-default btn-sm facet-clear-all" role="button" title="{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}" tabIndex="0">{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}</a>
          {{/if}}
        </h2>
      </div>
      <ul>
        {{#each items}}
          <li>
            <h3><a title="{{title}}" href="{{url}}">{{#if parent}}<span class="glyphicon glyphicon-file pull-left text-muted" aria-hidden="true"></span>{{/if}}{{title}}</a></h3>
            <p class="fragment">{{{fragment}}}</p>
            {{#if parent}}
              <p class="small related-article">{%endraw%}{{ resx.Related_Article }}{%raw%}: <a title="{{parent.title}}" href="{{parent.absoluteUrl}}">{{parent.title}}</a></p>
            {{/if}}
            <ul class="note-group small list-unstyled">
            {{#if relatedNotes}}
              {{#each relatedNotes}}
                <li class="note-item">
                  {{#if isImage}}
                    <a target="_blank" title="{{title}}" href="{{absoluteUrl}}"><span class="glyphicon glyphicon-file" aria-hidden="true"></span>&nbsp;{{title}}</a>
                  {{else}}
                    <a title="{{title}}" href="{{absoluteUrl}}"><span class="glyphicon glyphicon-file" aria-hidden="true"></span>&nbsp;{{title}}</a>
                  {{/if}}
                  <p class="fragment text-muted">{{{fragment}}}</p>
                </li>
              {{/each}}
            {{/if}}
            {{#if relatedAttachments}}
              {{#each relatedAttachments}}
                <li class="note-item">
                  {{#if isImage}}
                    <a id="kbattachment-{{entityID}}" href="javascript:downloadKbAttachmentFile('kbattachment-{{entityID}}', '{{title}}', {{fileSize}}, '{{fileType}}', '{{downloadBlockUrl}}', '{{initializeDownloadUrl}}')"><span class="glyphicon glyphicon-file" aria-hidden="true"></span>&nbsp;{{title}}</a>
                  {{else}}
                    <a id="kbattachment-{{entityID}}" title="{{title}}" href="javascript:downloadKbAttachmentFile('kbattachment-{{entityID}}', '{{title}}', {{fileSize}}, '{{fileType}}', '{{downloadBlockUrl}}', '{{initializeDownloadUrl}}')"><span class="glyphicon glyphicon-file" aria-hidden="true"></span>&nbsp;{{title}}</a>
                  {{/if}}
                  <p class="fragment text-muted">{{{fragment}}}</p>
                </li>
              {{/each}}
            {{/if}}
            </ul>
          </li>
        {{/each}}
      </ul>
    {{else}}
      <h2>{%endraw%}{{ resx.Search_No_Results_Found }}{%raw%}<em class="querytext">{{{query}}}</em>
        {{#if isResetVisible}}
          <a class="btn btn-default btn-sm facet-clear-all" role="button" title="{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}" tabIndex="0">{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}</a>
        {{/if}}
      </h2>
   {{/if}}
  </script>
  <script type="text/javascript">
    function downloadKbAttachmentFile(attachmentElementId, fileName, fileSize, mimeType, downloadBlockUrl, initializeUrl) {
      // Download block API supports max 4MB block size
      const blockSizeInBytes = 4096 * 1024;
      const totalNumberOfBlocks = parseInt(fileSize / blockSizeInBytes + 1);
      var fileContinuationToken = "";
      var contentString = "";
      var numberOfBlocksDownloaded = 0;
      var blockNumberToContentMap = {};
      function downloadBlockCallback(i, result) {
        numberOfBlocksDownloaded++;
        blockNumberToContentMap[i] = result;
        if (numberOfBlocksDownloaded == totalNumberOfBlocks) {
          for (var j = 0; j < totalNumberOfBlocks; j++) {
            contentString += blockNumberToContentMap[j];
          }
          var isImage = mimeType.startsWith('image/');
          const attachmentElement = document.getElementById(attachmentElementId);
          if (isImage) {
            const bodyByteString = atob(contentString);
            const bodyBuffer = new ArrayBuffer(bodyByteString.length);
            const bodyView = new Uint8Array(bodyBuffer);
            for (var k = 0; k < bodyByteString.length; k++) {
              bodyView[k] = bodyByteString.charCodeAt(k);
            }
            var imageUrl = URL.createObjectURL(new Blob([bodyBuffer], { type: mimeType }));
            attachmentElement.href = imageUrl;
            attachmentElement.target = "_blank";
          }
          else {
            const linkSource = 'data:' + mimeType + ';base64,' + contentString;
            attachmentElement.href = linkSource;
            attachmentElement.download = fileName;
          }
          attachmentElement.click();
        }
      }
      shell.ajaxSafePost({
        type: 'GET',
        url: initializeUrl,
        success: function (result) {
          fileContinuationToken = encodeURIComponent(result);
          for (var i = 0; i < totalNumberOfBlocks; i++) {
            url = downloadBlockUrl + "&blockNumber=" + i + "&fileContinuationToken=" + fileContinuationToken + "&blockSize=" + blockSizeInBytes;
            var x = downloadBlockCallback.bind(this,i);
            shell.ajaxSafePost({
              type: 'GET',
              url: url,
              success: (result) => { x(result) }
            });
          }
        }
      });
    }
  </script>
{%endraw%}

Configuraciones de sitios

Debe agregar el valor \_logicalname:annotation~0.9^0.25 para la configuración Search/Query. Una vez agregado, el valor debe ser el siguiente:

+(@Query) \_title:(@Query) \_logicalname:knowledgearticle~0.9^0.3 \_logicalname:annotation~0.9^0.25 \_logicalname:adx_webpage~0.9^0.2 -\_logicalname:adx_webfile~0.9 adx_partialurl:(@Query) \_logicalname:adx_blogpost~0.9^0.1 -\_logicalname:adx_communityforumthread~0.9

Para configurar las facetas para anotaciones de grupo asociadas a los artículos de Knowledge Base y los archivos web en una única faceta, edite el nombre de la configuración del sitio Search/RecordTypeFacetsEntities y anexar ;Downloads:annotation,adx_webfile a su valor.

Para permitir que los datos adjuntos asociados a los artículos de conocimientos aparezcan en el sitio web y los resultados de la búsqueda, edite la configuración del sitio KnowledgeManagement/DisplayNotes y establezca su valor en Verdadero. La configuración del sitio KnowledgeManagement/NotesFilter contiene un valor de prefijo que no debe prefijarse al campo de texto de notas en notas; en la página web solo aparecerá notas con el valor de prefijo especificado. De forma predeterminada, el valor es *WEB*, pero puede cambiarlo a través de la configuración del sitio.

Para habilitar la indexación de los datos adjuntos de los archivos asociados a las notas, cree la configuración del sitio Search/IndexNotesAttachments y establezca su valor en Verdadero.