Audio wont play

I want this to play a sound when it get bonusAreaDetectionBox. I have the sound in the object.

#pragma strict
private var score : int = 0;
var guiScore : GUIText;
var particles_sparks : GameObject;
var particles_squares : GameObject;
var bonus : AudioSource;

//Ingame Score start at 0
function Start () {
guiScore.text = “Score: 0”;
}

//Ball speed and increase speed
function Awake(){
rigidbody.AddForce(8, 8, 0, ForceMode.Impulse);
InvokeRepeating(“IncreaseBallVelocity”, 2, 2);
InvokeRepeating(“UpdateScore”, 0.05, 0.05);
}

function UpdateScore(){
score += 1;
guiScore.text = "Score: " + score.ToString();
}

//define speed increase
function IncreaseBallVelocity(){
rigidbody.velocity *= 1.05;
}

//if below paddle end game
function Update () {
if(transform.position.y < -22){
GameOver();
}
}

//collision makes brick destroy and add score
function OnCollisionEnter(col : Collision){
audio.Play();
Instantiate(particles_sparks, transform.position, transform.rotation);
if(col.collider.name == “Brick”){
Destroy(col.gameObject);
score += 100;
guiScore.text = "Score: " + score;
}
if(col.collider.name == “bonusAreaDetectionBox”){
score += 1000;
guiScore.text = "Score: " + score;
Instantiate(particles_squares, transform.position, transform.rotation);
}
}

//if higher score increase main screen score and return to main
function GameOver(){
if(score > PlayerPrefs.GetInt(“brickScore”)){
PlayerPrefs.SetInt(“brickScore”, score);
}
Application.LoadLevel(“Menu”);

You should really try to put your code inside of the code tags to make it easier for people to read. It looks like you create a variable bonus that is an AudioSource, but then you call the play function on audio. audio is part of a monobehaviour, so if you want to play the audio source that is contained in bonus, you need to call bonus.Play(). I’m assuming that you have set it’s audio clip in the inspector.