The Fluent Calculus has largely been focused on building agents that work individually. However, agents often need to interact with each other to learn more about their environment as well as to achieve their goals. One form of interaction is by means of communication. Effective, goal--oriented communication requires knowledge of other agents. This paper studies the problem of endowing agents with the ability to reason about the knowledge of other agents and with communication skills. Our formalism for the knowledge of other agents generalizes the existing notion of knowledge in the Fluent Calculus. Communication is treated as actions which are called communicative actions. The specification of communicative actions is based on the formalism for the knowledge of other agents. We have also developed an implementation of the theory as an extension to FLUX, which is a programming method that allows to design intelligent agents based on the Fluent Calculus.