Заполняет несколько полей за одно обращение и, если попросить, нажимает кнопку отправки тем же шагом. Цена: 1 кредит за шаг — независимо от того, сколько в нём полей. Работа тут одна: страница собирается один раз, в конце.

Зачем отдельная ручка

Анкета заказа в интернет-магазине — это имя, почта, телефон, город, способ доставки, способ оплаты, примечание и две галочки согласия. Отдельными вызовами fill это девять обращений, девять ответов со всей страницей и восемь пауз между ними, каждая из которых приближает сессию к закрытию по простою. Здесь поля идут подряд, по порядку списка. Порядок соблюдается намеренно: витрины пересчитывают одно поле по другому, и «город» перед «улицей» — не прихоть, а условие того, что улица вообще появится.

Запрос

Параметры

string
required
Идентификатор сессии из open.
array
required
Поля анкеты по порядку. Каждое — объект с ref и value. От одного до шестидесяти.
string
Ссылка на кнопку, которую нажать после заполнения. Пусто — анкета останется заполненной, но не отправленной.
string
default:"buttons,fields"
Что вернуть после заполнения. Те же значения, что и в open.

Что означает value

Зависит от того, что за поле — смотрите field в списке элементов.
Радиокнопку снять нельзя: её отменяет только выбор соседней в той же группе. На нет она честно останется выбранной, и это будет видно в got — вместо того, чтобы сделать вид, что сняли.Уже выбранный переключатель повторным да не трогается. Иначе анкета, заполненная дважды, оказалась бы пустой.

Ответ

string
Что оказалось в поле на самом деле. Сверяйте с value: маска ввода, maxlength и обработчик на странице могли его переписать. В примере выше телефон уехал в поле цифрами, а вернулся в маске — это нормально, и агент должен видеть именно возвращённое.
integer
Сколько знаков набрано. У списка и переключателя — ноль: вводом там дело не решается.
string
Почему поле не заполнилось. Промах по одному полю не отменяет остальных: анкета, заполненная на пять шестых, полезнее пустой, а какое поле не легло — видно здесь.
string
Какая кнопка нажата. Приходит, только если submit был задан и нажатие прошло; иначе на её месте submit_error.

Оформление заказа целиком

Живой пример: один дешёвый товар, самовывоз, оплата при получении.
Разделы анкеты открываются по очереди: способы доставки и оплаты на витринах Битрикса появляются в разметке только после того, как заполнен покупатель. Поэтому шагов два, а не один, и ref для второго берутся из ответа первого — ссылки предыдущего списка после перерисовки уже не действуют.

Частые отказы

Отказ по одному полю приходит в его строке filled[].error и шаг не отменяет. Отказ по сессии — общий, и тогда filled не приходит вовсе.

Дальше

Элементы и ссылки

Что такое field, group, checked и options.

fill

Одно поле, когда оно и вправду одно.