Procurar no conteúdo de anexos do artigo de conhecimento
Pode utilizar o anexo do artigo de conhecimento para incluir ficheiros transferíveis em artigos da base de dados de conhecimento. Também pode utilizar ficheiros Web para criar uma página FAQ com conteúdo transferível.
Importante
Apenas os ficheiros anexados a artigos de dados de conhecimento podem ser pesquisados. Os ficheiros anexados aos ficheiros Web não são pesquisáveis.
Pode configurar o seu site do Power Pages para permitir que os utilizadores pesquisem dentro do conteúdo de anexos de artigos da base de dados de conhecimento. Isto ajuda os utilizadores a localizar as informações que está a procurar.
Em artigos da base de dados de conhecimento, qualquer anexo de notas com o prefixo definido é indexado.
Para indexar os anexos do artigo de conhecimento, deve criar as seguintes definições do local e definir o seu valor como Verdadeiro:
Definição do local | Descrição |
---|---|
Search/IndexNotesAttachments | Indica se o conteúdo dos anexos de artigos da base de dados de conhecimento deve ser indexado. Por predefinição, está definido como False. |
KnowledgeManagement/DisplayNotes | Indica se deve apresentar anexos de artigos da base de dados de conhecimento. Por predefinição, está definido como False. |
Quando procura um termo, os resultados da pesquisa também incluem anexos. Se o termo de pesquisa corresponder a um anexo do artigo de conhecimento, a ligação para o artigo da base de dados de conhecimento correspondente também será fornecida. Para ver os anexos transferíveis, selecione Transferências em Tipo de Registo no painel esquerdo. Para modificar a etiqueta Transferências, edite o fragmento de conteúdo de Pesquisa/Faceta/Transferências. Por predefinição, o valor está definido como Transferências.
Nota
A pesquisa do Dataverse tem de estar ativada no seu ambiente para utilizar esta funcionalidade.
Pesquisar em anexos de artigos da base de dados de conhecimento
Se o seu site utilizar a pesquisa .NET da Lucene, pode permitir que o site pesquise em anexos de artigos de conhecimento definindo a opção Sincronizar anexos de artigos de conhecimento com o site como Sim no centro de administração do Dynamics 365 Customer Service ou na aplicação Hub de Suporte ao Cliente. Não precisa de configurar esta opção se o seu site estiver a utilizar a pesquisa do Dataverse, por predefinição, conseguirá pesquisar nos anexos de artigos de conhecimento.
Isto permite à pesquisa pesquisar em anexos de artigos de conhecimento e tornar as informações facilmente acessíveis aos consumidores de conhecimento. Com esta nova capacidade de anexo, não precisará de utilizar os anexos de notas para o site. Os anexos de artigos de conhecimento serão sincronizados automaticamente com o anexo de notas. Mais informações: Atualizar anexos de artigos da base de dados de conhecimento para o portal
Atualizar configurações de site
Se já tiver um site antes de abril de 2018 e tiver atualizado o seu site para a versão mais recente, deverá utilizar as seguintes configurações para ter a mesma experiência de utilizador que uma nova instalação.
Fragmentos de Conteúdo
Para modificar a etiqueta apresentada nos resultados da pesquisa para obter anotações e transferências de ficheiros Web, crie um fragmento de conteúdo de Pesquisa/Faceta/Transferências e defina o seu valor, conforme necessário. O valor predefinido é Transferências.
Modelos Web
O modelo Web Pesquisa por Facetas - Modelo de Resultados é revisto para apresentar os ficheiros associados a artigos da base de dados de conhecimento como itens de resultados de pesquisa principais com uma ligação de artigo relacionado. Deve atualizar o modelo Web Pesquisa por Facetas - Modelo de Resultados para a seguinte fonte:
{% 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> {{title}}</a>
{{else}}
<a title="{{title}}" href="{{absoluteUrl}}"><span class="glyphicon glyphicon-file" aria-hidden="true"></span> {{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> {{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> {{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%}
Definições do Site
Tem de adicionar o valor \_logicalname:annotation~0.9^0.25
à definição do local Pesquisa/Consulta. Depois de adicionado, o valor deve ser o seguinte:
+(@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 as facetas para agrupar as anotações associadas a artigos da base de dados de conhecimento e ficheiros Web numa única faceta, edite o nome da definição do local Search/RecordTypeFacetsEntities e anexe ;Downloads:annotation,adx_webfile
ao seu valor.
Para permitir que os anexos associados aos artigos da base de dados de conhecimento apareçam no site e nos resultados da pesquisa, edite a definição do site KnowledgeManagement/DisplayNotes e defina o seu valor como True. A definição do site KnowledgeManagement/NotesFilter contém um valor de prefixo que deve ser prefixado ao campo de texto da nota em notas; apenas as notas com o valor do prefixo especificado aparecerão na página Web. Por predefinição, o valor é *WEB*, mas pode alterá-lo através da definição do site.
Para ativar a indexação de anexos de ficheiros associados às notas, crie a definição do local Search/IndexNotesAttachments e defina o valor como Verdadeiro.