Met de volgende functie kan je een het coursework laten een publisch genereren binnen een bepaalde classroom.
Om dit te stoppen maak je gebruik van de remove.
Denk er wel aan dat je ergens de registrationID moet bewaren, zoniet kan je deze niet ongedaan maken.
Het idee is dat iedere eigenaar van een classroom deze publisch uit voert, zodat voor alle gemaakte classrooms de data wordt gepubliceert in de pub/sub service en de activatie slechts door één account per klas gebeurt.
/**
* helper function
* register Classroom publish item
*
*/
function PublishRegister() {
let request ={
"cloudPubsubTopic": {
"topicName": "projects/quiztofirestore/topics/Classroom_courseworks"
},
"expiryTime": "2023-12-02T15:01:23Z",
"feed": {
"courseWorkChangesInfo": {
"courseId": "14136885...."
},
"feedType": "COURSE_WORK_CHANGES"
},
"registrationId": ""
}
let key= Classroom.Registrations.create(request)
Logger.log(key)
Logger.log(key.registrationId)
}
/**
* helper function
* remove registration Classroom publish item
*
*/
function PublishRemove(){
// registration ID from publish item.
let regID= "-867201813579825152"
let key= Classroom.Registrations.remove(regID)
Logger.log(key)
}
Wanneer je nu een item in de bewuste klas aanpast (vb score geven aan cursist), dan zal dit en pub/sub topic message genereren.
Deze message kan je in de cloud console gaan lezen, via subscription/messages/pull
Zie video Cloud Functions: from Pubsub to Firebase Cloud Firestore in Python , Text , Cloud Functions: moving data from Pubsub to Firebase Cloud Firestore in TypeScript
Google cloud self pased lab: Build a Resilient, Asynchronous System with Cloud Run and Pub/Sub