Things are pretty clear in the SOF thread :)
getFirstRequest and getSecondRequest are methods that take a Session and return an Array[Byte] (or better, a Validation[Array[Byte]).
In those, you would populate some POJO with values coming from the Session, and serialize it.
For example:
getFirstRequest(session: Session) =
for {
id <- session("id").validate[Int]
name <- session("id").validate[String]
email <- session("id").validate[String]
} yield Person.newBuilder.setId(id).set(name).set(email).toByteArray