В дополнение к преобразованию концов строки CRLF в LF, dos2unix
также удаляет спецификации:
dos2unix *.txt
dos2unix
также преобразует файлы UTF-16 с спецификацией (но не файлы UTF-16 без спецификация) в UTF-8 без спецификации:
$ printf '\ufeffä\n'|iconv -f utf-8 -t utf-16be>bom-utf16be
$ printf '\ufeffä\n'|iconv -f utf-8 -t utf-16le>bom-utf16le
$ printf '\ufeffä\n'>bom-utf8
$ printf 'ä\n'|iconv -f utf-8 -t utf-16be>utf16be
$ printf 'ä\n'|iconv -f utf-8 -t utf-16le>utf16le
$ printf 'ä\n'>utf8
$ for f in *;do printf '%11s %s\n' $f $(xxd -p $f);done
bom-utf16be feff00e4000a
bom-utf16le fffee4000a00
bom-utf8 efbbbfc3a40a
utf16be 00e4000a
utf16le e4000a00
utf8 c3a40a
$ dos2unix -q *
$ for f in *;do printf '%11s %s\n' $f $(xxd -p $f);done
bom-utf16be c3a40a
bom-utf16le c3a40a
bom-utf8 c3a40a
utf16be 00e4000a
utf16le e4000a00
utf8 c3a40a
Используя пакет QnAMaker v3, на который вы ссылались, вы сможете самостоятельно контролировать тип и формат ответа. Добавляя, однако, много ответов, которые вы считаете подходящими в качестве вложений, и устанавливая тип вложения в Карусель.
Вы можете переопределить метод, который возвращает ответ пользователю в QnAMakerDialog, как показано ниже;
protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults results)
{
if (results.Answers.Count > 0)
{
// build your response here adding card attachment for each answer
// and set attachment type to carusel
await context.PostAsync(response);
}
}