code: def get_items_by_id(self, jid, node, ids):
          
  
          iq = aioxmpp.stanza.IQ(to=jid, type_=aioxmpp.structs.IQType.GET)
          iq.payload = pubsub_xso.Request(
              pubsub_xso.Items(node)
          )
  
          iq.payload.payload.items = [
              pubsub_xso.Item(id_)
              for id_ in ids
          ]
  
          if not iq.payload.payload.items:
              raise ValueError("ids must not be empty")
  
          return (yield from self.client.send(iq))
docs: Request specific items by their IDs from a node.
  
          :param jid: Address of the PubSub service.
          :type jid: :class:`aioxmpp.JID`
          :param node: Name of the PubSub node to query.
          :type node: :class:`str`
          :param ids: The item IDs to return.
          :type ids: :class:`~collections.abc.Iterable` of :class:`str`
          :raises aioxmpp.errors.XMPPError: as returned by the service
          :return: The response from the service
          :rtype: :class:`.xso.Request`
  
          `ids` must be an iterable of :class:`str` of the IDs of the items to
          request from the pubsub node. If the iterable is empty,
          :class:`ValueError` is raised (as otherwise, the request would be
          identical to calling :meth:`get_items` without `max_items`).
  
          Return the :class:`.xso.Request` object, which has a
          :class:`~.xso.Items` :attr:`~.xso.Request.payload`.