Problem to read the Received message in GSM Shield (SIM900)

Hello,

I have a problem to read the message and the number, when i receive a message in my GSM Shield,
I want to display them (number and message) on the Terminal

I'm sorry for my english,
Can you help me please, and thanks to all,

This is the code and I have not finished the code yet:

#include <SoftwareSerial.h>
SoftwareSerial sim(7, 8); // Port entrer et sortie
int tempOut, vert=2, rouge=4;
String _buffer;
String numero = "+33787######"; //-> Numero de telephone
void setup() {
delay(5000); //Delais de 5 seconds pour laisser le bouclier GSM capter le signal reseau
Serial.begin(9600);
pinMode(vert, OUTPUT);
pinMode(rouge, OUTPUT);
_buffer.reserve(50);
Serial.println("Système démarré...");
digitalWrite(rouge,HIGH);
sim.begin(9600);
delay(7000);
Serial.println("tape e pour envoyer un SMS, r pour recevoir un SMS, et a pour faire un appel");
}
void loop() {
if (Serial.available() > 0)
digitalWrite(vert,LOW);
digitalWrite(rouge,HIGH);
switch (Serial.read())
{
case 'e':
Serial.println("e");
envoiMessage();
break;
case 'r':
Serial.println("r");
recevoirMessage();
break;
case 'a':
Serial.println("a");
appel();
break;
}
if (sim.available() > 0)
Serial.write(sim.read());
}
void envoiMessage()
{
Serial.println ("Envoyer MSG a: "+ numero);
sim.println("AT+CMGF=1"); // Définit le module GSM en mode texte
delay(1000);
sim.println("AT+CMGS="" + numero + ""\r"); //Numéro de téléphone portable pour envoyer un message
delay(1000);
String SMS = "Hello, how are you?";
sim.println(SMS);
delay(100);
sim.println((char)26);
delay(1000);
_buffer = _readSerial();
}
void recevoirMessage()
{
Serial.println ("SIM900 lire un SMS");
delay (10000);
sim.println("AT+CNMI=2,2,0,0,0"); // AT Command pour recevoir un SMS en direct
sim.println("AT+CMGF=1");
delay(1000);
Serial.write ("non lu Message");
}
String _readSerial() {
tempOut = 0;
while (!sim.available() && tempOut < 12000 )
{
delay(13);
tempOut++;
}
if (sim.available()) {
return sim.readString();
}
}
void appel() {
sim.print (F("ATD"));
sim.print (numero);
sim.print (F(";\r\n"));
_buffer = _readSerial();
Serial.println(_buffer);
}