Я построил свою собственную простую LMS в ColdFusion. Он просто использует iframe для отображения курса, и есть страница, на которой записаны заявления о консервной банке. Он работает отлично, но у меня есть курс, разработанный в Studio '13/presenter '13, вывод неверный, функция возобновления не работает в моей LMS.
Если я использую презентацию.html, пример
https://www.domainname.com/folder/courses/example_course/presentation.html?&actor={"name":["My_Name"],"mbox":["mailto:[email protected]"],"objectType":["Agent"]}&endpoint=https://www.domainname.com/folder/courses/&course_id=5&uuid=9AE6DEA4-9C19-F477-19B9822F1E2F0722®istration=36fc1ee0-2849-4bb9-b697-71cd4cad1b6e&activity_id=https://www.domainname.com/folder/courses/&auth=Basic TG9naW46UGFzc3dvcmQ=
резюме не работает, но отчеты о жестянке публикуются на моем сайте правильно.
Если я использую презентацию_html5.html, пример
https://www.domainname.com/folder/courses/example_course/presentation_html5.html?&actor={"name":["My_Name"],"mbox":["mailto:[email protected]"],"objectType":["Agent"]}&endpoint=https://www.domainname.com/folder/courses/&course_id=5&uuid=9AE6DEA4-9C19-F477-19B9822F1E2F0722®istration=36fc1ee0-2849-4bb9-b697-71cd4cad1b6e&activity_id=https://www.domainname.com/folder/courses/&auth=Basic TG9naW46UGFzc3dvcmQ=
резюме действительно работает, но жестяные заявления не публикуются.
Я выполнил руководство и настроил функцию возобновления: ="nofollow">http://www.Article.com/support/presenter-09/enable-and-disabling-the-prompt-to-resume-function
Я пробовал курс на нескольких разных веб-сайтах, на нескольких разных серверах и в нескольких разных браузерах (IE 11, FF 34.0.5, Chrome 39.0.2171.95 m), текущей версии Flash.
Функция возобновления не работает.
Я пробовал курс со всеми различными опциями, подсказками и т. Д., Включенными и отключенными флэш-куки.
Функция возобновления не работает.
Я пробовал курс на Scorm Cloud. Функция возобновления работает! Я открыл презентацию.html на своем компьютере в FireFox. Функция возобновления работает.
Я сузил вопрос до TinCan. Если я отключу TinCan в файле Presentation.html, изменив
var g_bTinCan = true; to var g_bTinCan = false;
Курс возобновляется как следует. Но поскольку TinCan выключен, он не публикует никаких заявлений в моей LMS.
Я понял, что мне, вероятно, нужно ответить на POST state?method=GET с данными состояния/резюме. Итак, что-то вроде этого
1Nk30a010904050607080b0on1001811f016110171101811000 (указывает курсу перейти к слайду 4 или что-то в этом роде).
Я понимаю, что данные закодированы/сжаты. Данные фактически поступают из данных о состоянии, отправленных в LMS. Каждый слайд публикует точку возобновления. Я предполагаю, что мне просто нужно получить данные точки возобновления из предыдущего сеанса и отправить обратно, когда пользователь возобновит курс, а tincan запрашивает данные возобновления.
Но почему-то все равно, что я верну и как я это верну. Мой курс просто загружается. Там есть все: панель навигации, дополнительные материалы для курса, кнопка выхода, только содержимое имеет знак загрузки. Ничего не кликабельно.
Я попытался опубликовать аналогичные заголовки, которые использует облако scorm в ColdFusion:
Access-Control-Allow-Header: Content-Type,Content-Length,Authorization,If-Match,If-None-Match,X-Experience-API-Version,X-Experience-API-Consistent-Through
Access-Control-Allow-Origin: *
Access-Control-Expose-Header: ETag,Last-Modified,Cache-Control,Content-Type,Content-Length,WWW-Authenticate,X-Experience-API-Version,X-Experience-API-Consistent-Through
Cache-Control: no-cache
Connection: keep-alive
Content-Type: application/json
X-Experience-API-Version: 1.0.0
access-control-allow-methods: HEAD,GET,POST,PUT,DELETE
Они приходят правильно вместе с ответом: 1Nk30a010904050607080b0on1001811f016110171101811000
Я пробовал возвращаемый формат как json, обычный текст, массив. Но курс не загружается. Я также обнаружил странное поведение, если я обновляю, а затем немедленно останавливаю браузер (курс никогда не обновляется). Это вызовет приглашение возобновить, а затем я могу нажать Да/Нет. И это работает. Очевидно, что это неправильно.
Любые идеи? Что мне не хватает? Я ищу, что курс Articulate ожидает в качестве ответа от моей (или любой) LMS/LRS, когда он запрашивает точку возобновления на state?method=GET.
Изменить
@Brian: тип контента — приложение/json
LRS должен возвращать Content-Type в том виде, в котором он был получен. Здесь все становится сложнее. state?method=GET перенаправляет на функцию cfc. ../includes/LRSCFC.cfc?method=GetState&returnFormat=plain
Это функция:
<cfheader name="Access-Control-Allow-Header" value="Content-Type,Content-Length,Authorization,If-Match,If-None-Match,X-Experience-API-Version,X-Experience-API-Consistent-Through">
<cfheader name="Access-Control-Allow-Origin" value="*">
<cfheader name="Access-Control-Expose-Header" value="Last-Modified,Cache-Control,Content-Type,Content-Length,WWW-Authenticate,X-Experience-API-Version,X-Experience-API-Consistent-Through">
<cfheader name="Cache-Control" value="no-cache">
<cfheader name="Connection" value="keep-alive">
<cfheader name="Content-Type" value="application/json">
<cfheader name="X-Experience-API-Version" value="1.0.0">
<cfheader name="access-control-allow-methods" value="HEAD,GET,POST,PUT,DELETE">
<cfreturn '1s43040ji1001111a0101101111000'>
Проблема в том, что если указать CF возвращать как json, используя функцию returnFormat=json или serializeJSON(). Он добавляет материал к возвращаемым данным.
Приведенный выше код вернет:
1s43040ji1001111a0101101111000
сообщая CF использовать json:
//"1s43040ji1001111a0101101111000"
Что является безопасной функцией CF.
Но что меня смущает, так это то, что Scorm Cloud только что вернулся
1s43040ji1001111a0101101111000
Он не отформатирован как JSON. Просто кажется, что это обычный текст, хотя Content-Type — application/json.
Если я верну всю информацию из cfheader, но оставлю cfreturn пустым, cfreturn "" курс останется там, как если бы я вернул "1s43040ji1001111a0101101111000"
1s43040ji1001111a0101101111000 - Should jump the user to slide 3.
Какой код состояния вы возвращаете? 200 OK
При любом другом статусе курс будет воспроизводиться, но будет жаловаться, что не может подключиться к серверу.
@Андрей
Любые ошибки, успехи, запросы в процессе? Нет ошибок. Вроде все успешно. запросы не выполняются.