At my university we use Moodle and that lets me setup a page where students can schedule one-on-one appointments with me (during office hours). When a student books a time, Moodle sends me an email with the details.
I use a rule and an Applescript to scrape the details from the email and put the booking into my calendar.