Partager via


Rechercher dans le contenu d’une pièce jointe d’article connaissance

Vous pouvez utiliser la pièce jointe et l’article connaissance pour inclure des fichiers téléchargeables dans des articles de la Base de connaissances. Vous pouvez également utiliser des fichiers Web pour créer une page de FAQ avec du contenu téléchargeable.

Important

Seuls les fichiers joints aux articles de la Base de connaissances peuvent être recherchés. Les fichiers joints aux fichiers web ne peuvent pas être recherchés.

Vous pouvez configurer votre site Power Pages pour permettre aux utilisateurs de rechercher dans le contenu des articles de la Base de connaissances. Cela permet aux utilisateurs de trouver des informations qu’ils recherchent.

Dans les articles de la Base de connaissances, les pièces jointes avec le préfixe défini est indexées.

Pour indexer les pièces jointes d’article connaissance, vous devez créer les paramètres de site suivants et définir leur valeur sur True :

Paramètre du site Description
Search/IndexNotesAttachments Indique si le contenu des pièces jointes et des articles de la Base de connaissances doit être indexé. Par défaut, la valeur est définie sur False.
KnowledgeManagement/DisplayNotes Indique si les pièces jointes des articles de la Base de connaissances doivent être affichées. Par défaut, la valeur est définie sur False.

Lorsque vous recherchez un terme, les résultats de la recherche comprennent également les pièces jointes. Si le terme de recherche correspond à une pièce jointe d'article de connaissance, le lien vers un article de la Base de connaissances correspondant est également fourni. Pour afficher les pièces jointes téléchargeables, sélectionnez Téléchargements sous Type d’enregistrement dans le volet gauche. Pour modifier l’étiquette Téléchargements, modifiez extrait de contenu Recherche/Facette/Téléchargements. Par défaut, la valeur est définie sur Téléchargements.

Note

La fonctionnalité Recherche Dataverse doit être activée dans votre environnement pour être utilisée.

Rechercher parmi les documents joints des articles de la base de connaissances

Si votre site utilise la recherche Lucene .NET, vous pouvez permettre au site web d’effectuer des recherches dans les documents joints des articles de la base de connaissances en définissant l’option Synchroniser les pièces jointes des articles de la base de connaissances avec le site sur Oui dans le centre d’administration Dynamics 365 Customer Service ou l’application Centre de service clientèle. Vous n’avez pas besoin de configurer cette option si votre site utilise la recherche Dataverse. Vous pourrez effectuer une recherche dans les pièces jointes des articles de connaissances par défaut.

Ceci permet à la recherche de parcourir les documents joints des articles de connaissances et rendre les informations facilement accessibles aux consommateurs de connaissances. Avec cette capacité de document joint, vous n’avez pas besoin d’utiliser des notes en documents joints pour le site. Les documents joints de l’article de connaissance seront automatiquement synchronisées avec le document joint des notes. Pour plus d’informations : Mettre à jour les pièces jointes d’articles de connaissances pour le portail

Mettre à jour les configurations du site

Si vous avez déjà un site web antérieur à avril 2018 et que vous l’avez mis à niveau avec la dernière version, vous devez utiliser les configurations suivantes pour avoir la même expérience utilisateur qu’avec une nouvelle installation du portail.

Extraits de contenu

Pour modifier l’étiquette affichée dans les résultats de la recherche pour les téléchargements d’annotations et de fichiers Web, créez un extrait du contenu Recherche/Facette/Téléchargements, puis définissez sa valeur selon les besoins. La valeur par défaut est Téléchargements.

Modèles Web

Le modèle Web Recherche à facettes – Modèle de résultats est modifié pour afficher les fichiers associés à des articles de la Base de connaissances comme éléments des résultats de la recherche principaux avec un lien vers l’article associé. Vous devez mettre à jour le modèle Web Recherche à facettes – Modèle de résultats avec la source suivante :

{% 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%}

Paramètres du site

Vous devez ajouter la valeur \_logicalname:annotation~0.9^0.25 au paramètre de site recherche/requête. Une fois ajoutée, la valeur doit être la suivante :

+(@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

Pour configurer les facettes pour regrouper les annotations associées à des articles de la Base de connaissances et à des fichiers Web en une seule facette, modifiez le nom du paramètre de site recherche/RecordTypeFacetsEntities et ajoutez ;Downloads:annotation,adx_webfile à sa valeur.

Pour autoriser les pièces jointes associées aux articles de la Base de connaissances à s’afficher dans le site web et dans les résultats de la recherche, modifiez le paramètre de site KnowledgeManagement/DisplayNotes et définissez sa valeur sur True. Le paramètre de KnowledgeManagement/NotesFilter contient une valeur de préfixe qui doit être préfixée au champ de texte de la note sur les notes ; seules les notes avec la valeur de préfixe spécifiée s’afficheront sur la page web. Par défaut, la valeur est *WEB*, mais vous pouvez la modifier avec le paramètre de site.

Pour activer l’indexation des pièces jointes de fichier associées à des notes, créez paramètre de site recherche/Search/IndexNotesAttachments et définissez sa valeur sur True.